v2026.05.19.3 — playback stall resilience + legacy home cleanup #56

Merged
bvandeusen merged 262 commits from dev into main 2026-05-19 15:48:08 -04:00
bvandeusen commented 2026-05-19 15:48:01 -04:00 (Migrated from git.fabledsword.com)

Mobile client 2026.5.19+13. Flutter client + web-test changes only — no server code changes. One Flutter drift schema migration (10 → 11).

Changes

  • #66 — playback stall watchdog + bounded retry + skip-to-cached (headline). Fixes the real-world failure mode: on poor coverage, a track finishes and the next never starts (stream attempt fails, no retry). Adds a 15s stall watchdog keyed off buffered-position progress, one bounded recover attempt, then skip-to-next-cached-or-pause so the queue keeps moving instead of hanging silently.
  • #406 — drop legacy home snapshot path. Removes CachedHomeSnapshot / legacy homeProvider / home-data JSON encoders; metadata prefetcher re-pointed to the per-item homeIndexProvider. Drift schemaVersion 10 → 11 with a migration that DROP TABLE IF EXISTS "cached_home_snapshot" (older from < 3 path now creates the legacy table via raw SQL before the drop so the migration chain stays valid).
  • #374 — web route-test triage. discover.test.ts / requests.test.ts were the only route tests not mocking $app/state (+$app/navigation), so rendering the page pulled SvelteKit's client runtime and threw notifiable_store is not a function at module load. Added the repo-standard vi.hoisted + pageUrlModule mock; un-skipped both suites; removed the vitest.config exclude. Test-only, no runtime impact.

Caveat

#66 has not been device-verified on a throttled / poor-coverage connection (tracked: Fable #455). Releasing on the established "full send" basis — verify in the field after install: on a weak/airplane-toggled connection, confirm a failed next-track no longer hangs the queue (it should retry once, then skip to a cached track or pause cleanly).

Post-install check

  • Media notification + watch transport controls still present during playback (regression check vs v2026.05.19.2).
  • Poor-connection: failed track advance recovers or skips rather than stalling silently.
Mobile client `2026.5.19+13`. Flutter client + web-test changes only — **no server code changes**. One Flutter drift schema migration (10 → 11). ## Changes - **#66 — playback stall watchdog + bounded retry + skip-to-cached** (headline). Fixes the real-world failure mode: on poor coverage, a track finishes and the next never starts (stream attempt fails, no retry). Adds a 15s stall watchdog keyed off buffered-position progress, one bounded recover attempt, then skip-to-next-cached-or-pause so the queue keeps moving instead of hanging silently. - **#406 — drop legacy home snapshot path.** Removes `CachedHomeSnapshot` / legacy `homeProvider` / home-data JSON encoders; metadata prefetcher re-pointed to the per-item `homeIndexProvider`. Drift `schemaVersion` 10 → 11 with a migration that `DROP TABLE IF EXISTS "cached_home_snapshot"` (older `from < 3` path now creates the legacy table via raw SQL before the drop so the migration chain stays valid). - **#374 — web route-test triage.** `discover.test.ts` / `requests.test.ts` were the only route tests not mocking `$app/state` (+`$app/navigation`), so rendering the page pulled SvelteKit's client runtime and threw `notifiable_store is not a function` at module load. Added the repo-standard `vi.hoisted` + `pageUrlModule` mock; un-skipped both suites; removed the `vitest.config` exclude. Test-only, no runtime impact. ## Caveat **#66 has not been device-verified on a throttled / poor-coverage connection** (tracked: Fable #455). Releasing on the established "full send" basis — verify in the field after install: on a weak/airplane-toggled connection, confirm a failed next-track no longer hangs the queue (it should retry once, then skip to a cached track or pause cleanly). ## Post-install check - Media notification + watch transport controls still present during playback (regression check vs v2026.05.19.2). - Poor-connection: failed track advance recovers or skips rather than stalling silently.
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/minstrel#56