fix(409,447): LibrariesScreen 'Never scanned' label + stabilize flaky scan-poll test #451

Merged
timothy merged 1 commits from fix/409-447-librariesscreen-neverscanned into main 2026-07-18 18:18:46 +02:00
Owner

#409: never-scanned local libraries rendered a bogus '12:00 AM' because the API serializes DateTime.MinValue as a truthy ISO string that formatDateTime happily parses. Added a client-side hasScanned() sentinel guard (treats null/unparseable/year<1900 as never-scanned).
#447: the flaky 'stops scan polling' test asserted synchronously after a fire-and-forget interval handler; wrapped the post-tick assertions in waitFor (no weakening). 20/20 green in a repeat loop.

Deviation to flag: the #409 issue author mildly preferred normalizing at the API read boundary (return null instead of MinValue). I steered this to a pure-SPA fix to avoid a DB migration for a priority:low bug — robust, but noting the deviation for a maintainer call.

Review: pure-SPA leaf — independent review skipped per skip rubric (stated). typecheck/lint/vitest green (23 tests).

fixes #409
fixes #447

**#409:** never-scanned local libraries rendered a bogus '12:00 AM' because the API serializes `DateTime.MinValue` as a truthy ISO string that `formatDateTime` happily parses. Added a client-side `hasScanned()` sentinel guard (treats null/unparseable/year<1900 as never-scanned). **#447:** the flaky 'stops scan polling' test asserted synchronously after a fire-and-forget interval handler; wrapped the post-tick assertions in `waitFor` (no weakening). 20/20 green in a repeat loop. **Deviation to flag:** the #409 issue author mildly preferred normalizing at the API read boundary (return null instead of MinValue). I steered this to a pure-SPA fix to avoid a DB migration for a priority:low bug — robust, but noting the deviation for a maintainer call. **Review:** pure-SPA leaf — independent review skipped per skip rubric (stated). typecheck/lint/vitest green (23 tests). fixes #409 fixes #447
timothy added 1 commit 2026-07-18 16:57:31 +02:00
fix(409,447): LibrariesScreen shows 'Never scanned' + stabilize flaky scan-poll test
Build ErsatzTV Image / CI image pin matches docker/ci (pull_request) Successful in 6s
Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 6s
Build ErsatzTV Image / decisions.md append-only (pull_request) Successful in 6s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 7m10s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 11s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 7s
Build ErsatzTV Image / Functional E2E (curl contracts) (pull_request) Successful in 14m17s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 19m27s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
25c8936bcb
fixes #409
fixes #447

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author
Owner

Review-verdict: MERGEABLE @ 25c8936bcb
Pure-SPA leaf (#409 client-side sentinel guard + #447 waitFor test stabilization, 20/20 repeat-green). Independent review skipped per skip rubric — stated. Note: #409 uses a client-side fix vs the issue author's mild preference for API-boundary normalization (flagged in PR body for a maintainer call).

Review-verdict: MERGEABLE @ 25c8936bcb4275fe897b5aaea09a8d271f249e98 Pure-SPA leaf (#409 client-side sentinel guard + #447 waitFor test stabilization, 20/20 repeat-green). Independent review skipped per skip rubric — stated. Note: #409 uses a client-side fix vs the issue author's mild preference for API-boundary normalization (flagged in PR body for a maintainer call).
timothy merged commit b1521f9047 into main 2026-07-18 18:18:46 +02:00
Sign in to join this conversation.