Skip to content

Big refactor: provider integration, E2E coverage, profiling and v0.9.1 - #11

Open
sachk wants to merge 60 commits into
masterfrom
big-refactor
Open

sachk wants to merge 60 commits into
masterfrom
big-refactor

Conversation

@sachk

@sachk sachk commented Oct 17, 2026

Copy link
Copy Markdown
Collaborator

Scope

  • Consolidate the big-refactor integration history into topic commits while preserving the original content. The original DAG remains available at preservation/big-refactor-pre-squash-20261017.
  • Extend the real-application journey across filter/reset remote focus recovery, nested retained details, repeat at actual EOF, and sleep-after-current precedence.
  • Add repeatable isolated native profiling with explicit software-renderer measurement limits, strict baseline compatibility, private artifacts and bounded cleanup.
  • Clean up webOS packaging and diagnostic scripts: install-only verification by default, explicit launch, bounded transport, exact registration checks, no installed-tree benchmark mutations.
  • Build and audit unsigned iOS device IPAs with internal simulator artifacts and honest signing/provisioning boundaries.
  • Bundle published compatible provider releases: Jellyfin 0.2.14, Emby 0.1.9, Plex 0.1.10, Stremio 0.1.3, Open Movies 1.1.2.
  • Prepare Spool 0.9.1 from this branch; this PR does not merge the branch automatically.

Verification

  • Provider contract runners: Qt JIT and interpreter modes, all five providers; package build/validation and published feed digest/size verification.
  • Emby finite HTTP transfer smoke: original byte identity, actual encoded MP4, duration/height and cleanup.
  • Local webOS CLI/transport boundary suite, shell/Python syntax, package audit/metadata contracts, profiling report contracts, version synchronization and Actions syntax.
  • Actual app journey and native full-suite results are tracked by the linked Actions checks.
  • No TV was connected to, installed, launched or tested. Unsigned IPAs are not installable as downloaded; native simulator success is not physical-device playback certification.

sachk added 30 commits October 17, 2026 23:56
- build: pin the published provider UX cohort
- fix(build): validate immutable Nix store roots
- fix(ui): preserve directional gestures, reorder state and native drop data
- fix(ui): reconcile row sections from the published payload

Original commits:
bf0c8be
01f3fed
38fa648
3e839c3
- feat(ios): integrate native review build with current mobile owners

Original commits:
4804eb8
- fix(sdk): bound provider archives before extraction
- fix(sdk): reject malformed manifest field types

Original commits:
3db6857
c53f595
- fix(storage): preserve file credentials on failed replacement
- fix(cache): own database inputs across initialization

Original commits:
1d4ae77
f25c81e
- fix(player): join event callbacks before asynchronous core destruction
- fix(player): fence reentrant starts and retain core controls
- fix(player): bind delayed playback reports to their original source

Original commits:
da1dfd1
83c01ce
b5038ae
- fix(queue): notify traversal changes and shuffle for real

Original commits:
b7edc67
- fix(home): preserve warm rows and retire obsolete content requests

Original commits:
b7acf99
- fix(remote): preserve the playback clock across pause and seek

Original commits:
cd9ad7f
- fix(discovery): keep servers without IDs distinct

Original commits:
467304c
- fix(navigation): preserve item identity across retained pages

Original commits:
4fd251d
- fix(qml): finish picker placement and respect menu boundaries

Original commits:
ab00c67
- fix(android): launch intents without visibility-sensitive preflight

Original commits:
bc1f3e4
- fix(state): publish manual item changes after confirmed writes

Original commits:
ef69d35
- fix(app): fence every playback intent with one retirement path

Original commits:
d585f3f
- perf(player): wait on the mpv event loop explicitly
- perf(player): move queue ranges as one model operation

Original commits:
1333306
0a6c91e
- perf(remote): reuse queue metadata lookups as hashed joins

Original commits:
a9e793a
- perf(diagnostics): sample only while an overlay observes

Original commits:
a56c69d
- perf(player): publish the playback UI clock at a bounded cadence
- perf(player): avoid color diagnostic queries after every seek

Original commits:
b91a834
e914272
- perf(diagnostics): stop route sampling on cancellation

Original commits:
ab7ddaa
- perf(qml): bind media cards to row-specific model roles
- perf(qml): search library titles in a single traversal
- perf(qml): keep home rows stable while loading changes
- perf(home): retain descriptors when only row content changes
- perf(qml): refresh settings rows only for availability changes

Original commits:
2fb12f4
2bcca5c
81494ec
b44195f
09b9e3e
- feat(details): expose server trailers and extras on detail pages

Original commits:
e28e7ef
- feat(settings): add preferred audio language

Original commits:
1afe13c
- feat(player): add local repeat controls and report queue state
- feat(player): add a sleep timer with cancellable playback stop

Original commits:
74e027b
44334aa
- fix(ui): honor routed Back and contain modal pointer input
- fix(ui): route certificate dialog cancellation through Back

Original commits:
69052b8
ba72096
- fix(ui): make media information remotely scrollable
- fix(ui): reserve space for setting selectors
- fix(ui): expose accessible button actions and bounded content

Original commits:
4566f10
626305e
ba93a09
- fix(ui): give diagnostics confirmation ownership of its routes

Original commits:
c52124a
- fix(ui): make playback Back and segment actions consistent
- fix(ui): reflect the player mute state without changing it
- fix(ui): constrain the playback group menu to the viewport

Original commits:
a4274a5
988a2f8
0df128b
- fix(ui): keep detail actions and links usable on narrow screens

Original commits:
b8d3693
- fix(ui): offer persistent retry for a failed search

Original commits:
0bc907e
- fix(ui): keep updater input modal and honor routed Back

Original commits:
af37064
sachk added 22 commits October 17, 2026 23:56
- fix(qml): guard card role reads during delegate construction

Original commits:
3fee68e
- fix(qml): make text fields legible against the page and panels
- feat(settings): replace the search button with an always-visible field
- feat(home): turn providers on and off for Home, and modernise dropdowns

Original commits:
ab5382e
2d8e38c
be6f3fe
- fix(details): keep what is known on screen while details load

Original commits:
d7e0017
- fix(diagnostics): leave out figures that are not being measured

Original commits:
2e6a7a3
- fix(qml): rebuild a recycled row's cards when its model kind changes

Original commits:
5a500f3
…is downloaded

- fix(local): offer no library from the offline source until something is downloaded

Original commits:
07ea021
- test: disable the QML disk cache in the test binaries themselves

Original commits:
3354ac0
- fix(linux): open the system file chooser through the desktop portal

Original commits:
a807bd1
- fix(qml): clear the warnings logged on details, settings and item menus
- fix(shell): space the top bar's right-hand icons like the left
- feat(settings): replace the Back button with a back arrow by the title

Original commits:
00e74d3
900446c
bbfbd92
- feat(spoolet): capture page loads frame by frame, open items, read item state
- feat(tools): find flashes and layout jumps in page loads automatically

Original commits:
5e782f1
e6cd334
- fix(details): hold the space details will take, and keep it

Original commits:
6e45c9c
- test: keep GUI selectors off the developer's desktop however they start

Original commits:
38e800c
- docs(sdk): say what a zero resume position means

Original commits:
03dfb20
- fix(library): keep remote focus usable after clearing filters

Original commits:
acabad4
- feat(spoolet): report where keyboard focus is in status

Original commits:
a72d531
- fix(menus): keep the remote's row when a menu's entries are rebuilt

Original commits:
afb04cb
- fix(webos): link the SVG image reader so Jellyfin's mark renders

Original commits:
a889d9b
Copilot AI balanced review requested due to automatic review settings October 17, 2026 13:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

This branch was successfully deployed

2 active deployments
release — 9cf2cd25 Deployed Oct 17, 2026 by sachk via Trigger website build with exact release metadata #130
github-pages — 9cf2cd25 Deployed Oct 17, 2026 by sachk via Publish platform update metadata #130
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants