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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Mobile client
2026.5.19+13. Flutter client + web-test changes only — no server code changes. One Flutter drift schema migration (10 → 11).Changes
CachedHomeSnapshot/ legacyhomeProvider/ home-data JSON encoders; metadata prefetcher re-pointed to the per-itemhomeIndexProvider. DriftschemaVersion10 → 11 with a migration thatDROP TABLE IF EXISTS "cached_home_snapshot"(olderfrom < 3path now creates the legacy table via raw SQL before the drop so the migration chain stays valid).discover.test.ts/requests.test.tswere the only route tests not mocking$app/state(+$app/navigation), so rendering the page pulled SvelteKit's client runtime and threwnotifiable_store is not a functionat module load. Added the repo-standardvi.hoisted+pageUrlModulemock; un-skipped both suites; removed thevitest.configexclude. 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