Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 6s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m13s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 5m17s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m29s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m26s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m8s
Cold-review nit fixes on PR #298: - useCollectionsScan.scan() now guards on the whole family being busy (active OR any pending key of that family), not just the exact key — a sibling source of a family with a scan in flight no longer fires a redundant (benign-409) POST. - LibrariesScreen ExternalCollectionsSection disables every row of a family that has a pending or active scan (derives pendingFamilies from pendingKeys), matching Blazor's instant all-rows-disabled behavior instead of waiting a poll RTT. - Rewrite the promote test to actually observe the optimistic-pending window via a deferred POST (was only asserting the promoted end state), and add a test proving a sibling-source click fires no second POST while the family is pending. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>