timothy
3c5f4e867a
Merge pull request 'fix(480): probe external-JSON remote-stream URLs before ffmpeg' ( #486 ) from fix/480-external-json-probe into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 13s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 25s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 26s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m49s
Renovate / Renovate (push) Failing after 14m57s
Build CI Toolchain Image / Build & push CI image (push) Successful in 1m20s
Dependency vulnerability scan / NuGet vulnerable packages (push) Successful in 2m15s
2026-07-19 22:37:29 +00:00
timothy
ab25658643
Merge pull request 'feat(472): sub-split the HLS cold-start startup phase' ( #482 ) from feat/472-startup-subsplit into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m37s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 15m9s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 17m47s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m15s
2026-07-19 21:59:22 +00:00
timothy
55be64bd77
Merge pull request 'fix(477): guard media-server library sweeps against successful-but-empty fetches' ( #483 ) from fix/477-scanner-antinuke-guard into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 24s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 32s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 35s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m24s
2026-07-19 21:53:37 +00:00
timothy
de11eb01b3
Merge pull request 'fix(473): probe media-server remote streams before handing the URL to ffmpeg' ( #479 ) from fix/473-missing-media-resilience into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 14m51s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 18m21s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 19m4s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m6s
2026-07-19 20:24:59 +00:00
timothy
0d70425572
Merge pull request 'fix(476): cascade FileNotFound from removed shows/seasons to descendants' ( #481 ) from feat/476-cascade-filenotfound into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 14s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 33s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 34s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m9s
2026-07-19 20:19:37 +00:00
timothy
48d7598bae
Merge pull request 'ci(412): sample true peak-anon in the test job, not cache-inflated memory.peak' ( #475 ) from ci/412-peak-anon-sampler into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 26s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 27s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 22s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m56s
2026-07-19 19:09:29 +00:00
timothy
48d632d50a
Merge pull request 'perf(469): format gate uses dotnet format whitespace --folder (~480s → ~0.5s)' ( #471 ) from ci/469-format-speed into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 33s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 34s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 35s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m4s
2026-07-19 17:59:33 +00:00
timothy
e8d730359a
Merge pull request 'test(444): deterministic functional-E2E for the playout-build lock 409 + isLocked projection' ( #470 ) from feat/444-buildlock-e2e into main
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 16s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 26s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 27s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m43s
2026-07-19 15:57:41 +00:00
timothy
481a14675f
Merge pull request 'feat(431): TTL-cache health-check results; ?refresh=true forces a fresh run' ( #468 ) from feat/431-health-ttl-cache into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 34s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 33s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 33s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m37s
2026-07-19 13:43:11 +00:00
timothy
67dc9ca4c0
Merge pull request 'fix(464): render real channel logos in guide grid + channels list' ( #467 ) from fix/464-guide-logos into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m28s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m10s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 17m20s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m42s
2026-07-19 12:10:28 +00:00
timothy
a6c300730b
Merge pull request 'docs(404): mirror the weight UI into the MultiCollections design prototype' ( #466 ) from docs/404-designsync-mirror into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 17s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 26s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 27s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m7s
2026-07-19 11:25:26 +00:00
timothy
cc2968de15
Merge pull request 'fix(463): bound the schedules "Active schedule" selector so it stops overlapping the header' ( #465 ) from fix/463-schedule-select-width into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m23s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 14m3s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 17m14s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m57s
2026-07-19 10:21:00 +00:00
timothy
86cbf79b48
Merge pull request 'feat(404): weighted-distribution SPA — per-source weight inputs + WeightedShuffle order' ( #462 ) from feat/404-weight-ui into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 11s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 24s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m13s
2026-07-19 10:01:41 +00:00
timothy
996c545161
Merge pull request 'feat(queue): deterministic select-queue.sh — stop re-deriving the selector by hand' ( #461 ) from feat/select-queue-script into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 15s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 16s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 8s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m25s
2026-07-19 08:46:18 +00:00
timothy and Claude Opus 4.8
2fff5fc05d
Merge pull request 'feat(420): skip re-validating an already-green identical merge tree' ( #455 ) from feat/398-420-ci-build-once into main
...
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 12s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 25s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 26s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m56s
feat(420): skip re-validating an already-green identical merge tree (#455 )
Standalone cross-run tree-identity skip. Build-once (#398 ) was measured and rejected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-18 19:14:27 +00:00
timothy
8152afead1
Merge pull request 'feat(403): make unsupported PlaybackOrder loud at build time + tripwire' ( #457 ) from feat/403-loud-playbackorder into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m7s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 14m26s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 20m27s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m3s
2026-07-18 17:10:35 +00:00
timothy
6e97664487
Merge pull request #448 (feat/396): collapsible sidebar + nav-group accordions
...
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m15s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 19m30s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Fixes #396 . Force-merged (operator-authorized): all real checks passed green on 8cef07a6 (Build & test, EF migration, Functional E2E, formatting, docs, API sync, decisions.md append-only); the red status was a cancelled redundant re-run.
2026-07-18 15:24:53 +00:00
timothy
1cd06395aa
Merge pull request 'feat(350): instrument HLS cold-start latency (phase split + feature flags)' ( #446 ) from feat/350-coldstart-instrumentation into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m8s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 18m1s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 18m46s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m2s
2026-07-18 14:16:38 +00:00
timothy
c4695b1095
Merge pull request 'test(363): functional-E2E harness — deterministic scan-lock + collections-lock 409 flows' ( #443 ) from feat/363-e2e-deferred-flows into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-18 14:05:24 +00:00
timothy
551366aa72
Merge pull request 'feat(293): paginate GET /api/v1/search/all-items to cap DoS exposure' ( #442 ) from feat/293-search-allitems-cap into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m46s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m21s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 17m35s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m25s
2026-07-18 12:17:20 +00:00
timothy
8a808e6205
Merge pull request 'fix(308): idempotent concurrent Add*ToCollection instead of a composite-PK 500' ( #441 ) from feat/308-idempotent-collection-add into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 14m55s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 19m9s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 20m30s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m29s
2026-07-18 11:29:01 +00:00
timothy
3a463db36a
Merge pull request 'feat(425): per-source rotation weights + query corrections for auto-tune channels' ( #439 ) from feat/425-autotune-weighted-sources into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m25s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m36s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 17m45s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 6m8s
2026-07-18 02:29:16 +00:00
timothy
0a418a7c53
Merge pull request 'feat(176): visual rule builder for the SmartCollection editor' ( #433 ) from feat/176-smartcollection-rule-builder into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m4s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 20m41s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 14m44s
Build ErsatzTV Image / Build & push image (amd64) (push) Failing after 16s
2026-07-18 01:30:21 +00:00
timothy
6204e30c7c
Merge pull request 'feat(386): Auto-Tune per-channel DetailPanel slide-over (SPA)' ( #432 ) from feat/386-autotune-detailpanel into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m17s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m31s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 6m19s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 14m0s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Failing after 13m7s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Failing after 13m15s
2026-07-17 23:54:38 +00:00
timothy
0a34d1a585
Merge pull request 'feat(164): guided remediation for health checks' ( #430 ) from feat/164-health-checks-ux into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m1s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m0s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 17m5s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 6m0s
2026-07-17 23:12:19 +00:00
timothy
1abc5df18c
Merge pull request 'feat(385): per-channel overrides in auto-tune bulk-create' ( #428 ) from feat/385-autotune-overrides into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m30s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 17m47s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 17m59s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m51s
2026-07-17 22:03:53 +00:00
timothy
ba707f2e23
Merge pull request 'ci: pre-push guard against pushing an uncommitted working-tree change (H13)' ( #424 ) from ci/dirty-worktree-guard into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m19s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m58s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 19m15s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m41s
2026-07-17 21:25:30 +00:00
timothy
5e0c53c339
Merge pull request 'docs(lore): run local gate + cold review BEFORE pushing to Gitea CI' ( #426 ) from docs/review-before-ci into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 19s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 20s
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 7s
2026-07-17 20:59:34 +00:00
timothy
4818b07668
Merge pull request 'fix(416): docs-only skip never fired — detect against FETCH_HEAD (shallow-checkout safe)' ( #429 ) from fix/416-shallow-detect into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m12s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m2s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has started running
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-17 20:39:04 +00:00
timothy
1b355660c5
Merge pull request 'fix(320): break troubleshoot segment-wait loop on ffmpeg failure' ( #423 ) from fix/320-troubleshoot-segment-wait-isfailed into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 24m59s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m13s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 14m34s
2026-07-17 18:43:07 +00:00
timothy
9c72aebab0
Merge pull request 'ci(416): skip heavy jobs on docs-only changes without bricking the merge gate' ( #422 ) from ci/416-docs-only-skip into main
...
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m59s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m12s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Reviewed-on: #422
2026-07-17 18:10:24 +00:00
timothy
ffa8e5a000
Merge pull request 'fix(376): XML-escape access_token value in XMLTV guide output' ( #419 ) from fix/376-xmltv-token-escape into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m23s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 18m59s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 19m55s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m19s
2026-07-17 17:34:24 +00:00
timothy
fa7e8d75c4
Merge pull request 'feat(70): weighted / fair-share content distribution (WeightedShuffle playback order)' ( #402 ) from feat/70-weighted-distribution into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m35s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 4m53s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 18m26s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 7m40s
2026-07-17 17:00:46 +00:00
timothy
30415d12f9
Merge pull request 'docs(lore): batching, no "main checkout", trust the queue, diagnosing CI reds' ( #417 ) from docs/lore-batching-rules into main
...
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
docs(lore): batching, no "main checkout", trust the queue, diagnosing CI reds
Standing-lore corrections from the #72 session. Docs-only.
2026-07-17 16:43:33 +00:00
timothy
ac7c978824
Merge pull request 'fix(72): report a real per-channel playout count and flag channels that will never play' ( #405 ) from feat/72-164-channel-health into main
...
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 17m30s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m17s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Fixes #72
GET /api/v1/channels/{id} reported playoutCount: 0 for every channel on the
system — ChannelRepository.GetChannel never included Playouts, and the read is
AsNoTracking with no lazy proxies, so the count could only ever evaluate to 0.
That silently disabled the channel editor's playout-source guard. Both call
sites now share Mapper.GetPlayoutsCount (Mirror-aware), and the lean list DTO
gains PlayoutCount so the channels list flags a channel that will never play.
Deferred deliberately, now tracked: #414 (origin marker, blocked-by #383 ) and
#415 (empty-schedule + broken-source attribution). Related: #401 (silent
Mirror→Generated coercion).
Review-verdict: MERGEABLE @ 1e35248edf
2026-07-17 16:13:51 +00:00
timothy
2c7330f273
Merge pull request 'chore: PreToolUse guard that blocks a commit/push with a BOM'd touched .cs' ( #413 ) from chore/bom-guard-hook into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m14s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 13m51s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 18m0s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m43s
2026-07-17 15:50:01 +00:00
timothy
b3dbbd0528
Merge pull request 'ci(406): disable persistent compiler servers, cap the services: mysql, report peak RSS' ( #411 ) from ci/406-roslyn-mysql-caps into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m43s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m10s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 17m14s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m48s
2026-07-17 15:17:54 +00:00
timothy
76c710dfa5
Merge pull request 'ci: move api-docs and format back to ubuntu-latest (refs #406 )' ( #407 ) from ci/604-lane-rebalance into main
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m35s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 14m23s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 15m7s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m54s
2026-07-17 13:09:10 +00:00
timothy
5ac49e553e
Merge pull request 'fix(264): record library-level LastScan after a successful local scan' ( #408 ) from fix/264-library-lastscan into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-17 13:00:58 +00:00
timothy
ed4b0d45b1
Merge pull request 'feat(384): auto-tune DetailPanel content-source member read endpoint' ( #397 ) from feat/384-smartcollection-members into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m57s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m4s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m12s
Build ErsatzTV Image / Build & push image (amd64) (push) Failing after 29m57s
2026-07-17 10:43:49 +00:00
timothy
23a615ecd5
Merge pull request 'ci(390): shared CI toolchain image + drop 110s apt-ffmpeg + rebalance runner lanes' ( #399 ) from feat/390-ci-toolchain-image into main
Build ErsatzTV Image / CI image pin matches docker/ci (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build CI Toolchain Image / Build & push CI image (push) Successful in 20s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-17 10:40:24 +00:00
timothy
5701f93625
Merge pull request 'feat(380): extract shuffle-source construction to ShuffleSourceBuilder (kill PlaylistEnumerator's cross-engine reach-in)' ( #391 ) from feat/380-enumerator-seam into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m23s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 10m5s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 11m52s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-17 07:05:14 +00:00
timothy
33d6c6071b
Merge pull request 'test(77): characterize clock-boundary schedule padding + docs' ( #393 ) from feat/77-clock-align-verify into main
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Failing after 1s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
2026-07-17 01:26:49 +00:00
timothy
a5ac63dbd9
Merge pull request 'feat(69): Auto-Tune SPA wizard (Configure → Preview → Create) — PR2' ( #389 ) from feat/69-auto-tune-spa into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 4m13s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m51s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m38s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m47s
2026-07-16 22:30:52 +00:00
timothy
7ef7ef25e8
Merge pull request 'feat(71): per-playout reshuffle + shuffle-state surfacing' ( #387 ) from feat/71-reshuffle-playout into main
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been cancelled
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Merge pull request '#387 ' (feat(71): per-playout reshuffle + shuffle-state surfacing) from feat/71-reshuffle-playout into main
fixes #71
2026-07-16 22:19:03 +00:00
timothy
181eabdded
Merge pull request 'test(163): golden characterization tests for playout building (Classic + Block)' ( #382 ) from feat/163-playout-goldens into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m40s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m55s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m3s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-16 22:01:33 +00:00
timothy
331a427040
Merge pull request 'feat(69): auto-tuning backend — enumerate library metadata, preview + bulk-create channels (PR1)' ( #379 ) from feat/69-auto-tuning into main
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 13s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m7s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 8m44s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been skipped
2026-07-16 20:35:10 +00:00
timothy
dbd4bb43f7
Merge pull request 'feat(analyzers): enable incremental latest-All enforcement' ( #375 ) from feat/15-analyzer-promotion into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m51s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 6m15s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 7m9s
2026-07-16 20:19:07 +00:00
timothy
b17a70be1b
Merge pull request 'fix(spa): body margin + nav box-sizing resets ( #373 , #377 )' ( #378 ) from fix/373-377-spa-css-resets into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m11s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-16 20:12:52 +00:00
timothy
9938d9a6cd
Merge pull request ' #340 : configurable advertised IPTV base URL for M3U/XMLTV' ( #374 )
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m3s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m34s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 9m0s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 6m44s
2026-07-16 19:51:27 +00:00
timothy
de16a7c066
Merge pull request 'chore(deps): update dependency jetbrains.resharper.globaltools to 2025.3.4.1' ( #329 ) from renovate/jetbrains.resharper.globaltools-2025.x into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m37s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m16s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m58s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m8s
2026-07-16 18:47:04 +00:00
timothy
be85a462a4
Merge pull request 'chore(deps): update dependency humanizer.core to 3.0.10' ( #328 ) from renovate/humanizer-monorepo into main
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m22s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m23s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-16 18:38:12 +00:00
timothy
95d58f3b69
Merge branch 'main' into renovate/jetbrains.resharper.globaltools-2025.x
Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 10s
Build ErsatzTV Image / decisions.md append-only (pull_request) Successful in 11s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 13s
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 3m16s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 8m58s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 10m49s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
2026-07-16 18:35:14 +00:00
timothy
3654fad163
Merge pull request 'ci(coverage): collect code coverage and publish a summary (refs #15 )' ( #370 ) from feat/15-ci-coverage into main
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m21s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m40s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 6m21s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m44s
2026-07-16 17:29:34 +00:00
timothy
9f0bb65fb4
docs(queue): exclude parked selector candidates ( #372 )
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 1m43s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Refs #237
2026-07-16 17:25:10 +00:00
timothy
72d47ef052
fix(api): protect local library path details ( #371 )
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Has been cancelled
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been cancelled
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Fixes #334
2026-07-16 17:16:51 +00:00
timothy
5c1d2f63fa
Merge pull request 'docs(queue): cascade selector through priority tiers' ( #369 ) from codex/237-cascading-selector into main
...
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m13s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m1s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 9m29s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m16s
docs(queue): cascade selector through priority tiers (#369 )
2026-07-16 14:14:01 +00:00
timothy
ca5ac94466
Merge pull request 'fix(api): report direct streams as on air' ( #368 ) from codex/99-direct-onair into main
...
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m16s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m20s
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 5m26s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m7s
fix(api): report direct streams as on air (#368 )
2026-07-16 13:14:32 +00:00
timothy
ee044ab271
Merge pull request 'fix(web): coherent, recoverable Plex authorized-but-no-servers state ( #345 )' ( #366 ) from fix/345-plex-empty-servers into main
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m19s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m58s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 9m41s
Build ErsatzTV Image / Build & push image (amd64) (push) Failing after 15s
Merge PR #366 : fix(web) coherent, recoverable Plex authorized-but-no-servers state (#345 )
Separates Plex authorization (stored token) from connection (discovered servers)
so the authorized/unlocked/empty-servers state is coherent and recoverable
(offers Sign out, does not claim a connection). Gates the empty-servers
messaging on a released lock so it does not fire during discovery.
fixes #345
2026-07-16 12:36:52 +00:00
timothy
572066157e
Merge pull request ' #365 ' from docs/handoff-selector-terminal into main
...
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Functional E2E (curl contracts) (push) Successful in 3m30s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m4s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 9m48s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m24s
docs: make queue selection non-terminal
Fixes #364
2026-07-16 12:13:05 +00:00
timothy
82467f188b
Merge pull request ' #361 ' from feat/247-shell-routing into main
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m15s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 9m37s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m45s
refactor(web): extract ChicoryTV shell and routing
Closes #247
2026-07-16 11:42:19 +00:00
timothy
ecde59be32
docs(queue): record cheap-worker launch config ( #356 )
...
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (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 5m36s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m44s
Merge the reviewed, green documentation update. Fixes #355 .
2026-07-14 19:00:01 +00:00
timothy
e454ed94fd
Merge pull request 'docs(queue): enforce milestone-aware picker ranking' ( #348 ) from codex/queue-picker-claim-comments into main
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m55s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 6m2s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m53s
2026-07-14 06:03:46 +00:00
timothy
ffb3e6d5e1
Merge pull request 'fix(spa): clear dirty guard before saved navigation' ( #349 ) from codex/344-dirty-guard into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-14 06:02:35 +00:00
timothy
c197de421a
Merge pull request 'fix(api): #265 — If-Match evaluates per RFC 7232 (valid-but-non-matching -> 412)' ( #322 ) from fix/265-ifmatch-412 into main
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m20s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m42s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m25s
Merge PR #322 : #265 If-Match evaluates per RFC 7232 (valid-but-non-matching → 412)
2026-07-12 21:32:25 +00:00
timothy
fa655053ba
Merge PR #316 : #295 PR2 SPA session cutover + #301 side-effecting-GET POST-ification
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Failing after 1m8s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m14s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been skipped
#295 PR2: browser SPA authenticates with the session cookie (boot gate: Setup/Login), API key demoted to machine/MCP-only (machine-key management screen), logout. #301 : three side-effecting troubleshoot GET/HEAD endpoints + graphics-elements refresh POST-ified so the session-mutation CSRF gate covers them. Reviewed (fork + Codex + Fable reconciliation + fork fix-commit re-review), live-E2E'd (5/5), CI green.
Fixes #295
Fixes #301
2026-07-12 20:04:54 +00:00
timothy
9b3b3963fe
Merge pull request 'process: #311 H11 rebase-hook + PR-scoped format CI + #312 H12 qualification audit' ( #313 ) from ci/311-rebase-hook-format-ci into main
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m21s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 8m24s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m35s
2026-07-12 18:32:19 +00:00
timothy
cf4cb5117e
Merge pull request 'docs(process): #303 follow-ups — Codex-skip rubric + write-path live-E2E requirement' ( #309 ) from ci/303-process-followups into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m16s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m37s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m9s
2026-07-12 18:13:33 +00:00
timothy
2879c012ba
Merge pull request 'chore(process): #303 H10 — review-verdict merge-gate (latest commit must be reviewed)' ( #306 ) from ci/303-h10-review-verdict-gate into main
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m33s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m54s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m16s
2026-07-12 17:31:59 +00:00
timothy
0123e58914
Merge pull request 'chore(process): #303 Wave 3 — H3 root-screenshot guard + H9 decisions.md append-only guard' ( #305 ) from ci/303-wave3-guards into main
...
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / decisions.md append-only (push) Has been skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m25s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m23s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m24s
Merge pull request '#303 Wave 3 — H3 root-screenshot guard + H9 decisions.md append-only guard' (#305 ) from ci/303-wave3-guards into main
Part of #303 . Adds the Husky/CI append-only guard for docs/decisions.md (with the [decisions-edit] escape, mark-and-keep supersession, and a 1800-line read-cost consolidation floor) and the root-screenshot pre-commit guard. Reviewed MERGEABLE; user-approved merge.
2026-07-12 16:38:40 +00:00
timothy
08d633c687
Merge pull request 'fix(api): #269 force-write non-If-Match root writers past a concurrent Version bump' ( #302 ) from fix/269-force-version-on-root-writers into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 3m53s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m57s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-12 15:43:09 +00:00
timothy
5e5a59317a
Merge pull request ' #259 : content-aware stable child identity for schedule-item replace' ( #276 ) from feat/259-child-identity into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Bump prod compose tag (server-management) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-11 20:11:27 +00:00
timothy
bb310f6bc7
Merge pull request 'chore(dev): husky pre-commit / pre-push / commit-msg guardrails' ( #273 ) from feat/autolint-precommit into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m40s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m47s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 9m27s
2026-07-11 19:07:35 +00:00
timothy
550d7ac984
Merge pull request ' #253 PR2 — optimistic-concurrency fan-out (Template, DecoTemplate, Playlist, schedule-items)' ( #268 ) from feat/253-pr2 into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 3m49s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m7s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m38s
2026-07-11 17:54:05 +00:00
timothy
2de091ea4f
Merge pull request ' #253 PR1 — optimistic-concurrency contract (infra + Block reference)' ( #263 )
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m15s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m38s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-11 16:06:11 +00:00
timothy
8e2f995492
Merge pull request 'feat(media-sources): SPA management screens + write REST API ( #202 )' ( #262 ) from feat/202-media-sources into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m22s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 5m31s
Build ErsatzTV Image / Build & push image (amd64) (push) Failing after 18m15s
2026-07-11 15:38:24 +00:00
timothy
87060aa3de
Merge pull request 'fix(scheduling): stop silently resetting fill-group state + invalidate deco edits ( #251 , #252 )' ( #258 ) from fix/251-252-scheduling-invalidation into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-11 13:26:12 +00:00
timothy
77272ed5a7
Merge pull request 'fix(locking): release troubleshooting + playout locks on all terminal paths ( #233 , #234 )' ( #250 ) from fix/233-234-lock-leaks into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-11 12:12:52 +00:00
timothy
533c6c1e9f
Merge pull request 'refactor(spa): extract ChannelsScreen from App.tsx ( #244 , epic #243 phase 1)' ( #249 ) from feat/244-channels-extract into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m55s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m1s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m30s
2026-07-11 11:38:47 +00:00
timothy
eba22ce679
Merge pull request 'fix: reviewer post-merge blockers — empty-lineup bare create ( #212 ) + dirty-guard popstate/shuffle-toggle ( #230 )' ( #242 ) from fix/212-230-review-blockers into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-11 11:13:55 +00:00
timothy
c42928e891
Merge pull request 'fix(locking): EntityLocker atomicity + scan-lifecycle honesty ( #231 , #232 )' ( #241 ) from batch/231-232-lock-soundness into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-11 11:05:16 +00:00
timothy
6bbf669403
Merge pull request 'feat: schedules editor full mutation depth + channel-editor gaps ( #207 , #212 , #126 )' ( #229 ) from feat/207-212-schedules-channel-depth into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-11 10:05:53 +00:00
timothy
c4b7babbe8
Merge pull request 'test(api): locked-path 409 guard tests for ReplaceAlternateSchedules + ReplaceTemplates ( #215 )' ( #240 ) from fix/215-guard-tests into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 6m4s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-11 09:59:43 +00:00
timothy
c77ed43585
Merge pull request 'Integration: review-gates batch — #220/#215/#217/#219/#218 + #213 remainder (PRs #223–#228)' ( #239 ) from integrate/review-gates into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m59s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 8m54s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m38s
2026-07-11 00:03:46 +00:00
timothy
245b1a5889
Merge pull request 'fix(spa): gate mutation controls on stale result sets during refetch ( #221 )' ( #222 ) from fix/221-stale-refetch into main
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 7m6s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 7m46s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-10 23:47:36 +00:00
timothy
c63cadb834
Merge pull request 'feat: shared Add-to layer — search + media mutation surface ( #208 , #209 )' ( #216 ) from feat/208-209-add-to into main
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Docs update reminder (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-10 06:19:04 +00:00
timothy
4f8079986f
Merge pull request 'feat: playouts delete/reset/erase + collections custom-order/all-kind adds + parity nits ( #210 , #211 , #213 )' ( #214 ) from feat/210-211-playouts-collections into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m10s
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 10m21s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 11m4s
2026-07-09 21:17:29 +00:00
timothy
2b91837174
Merge pull request 'fix(openapi): spec property naming now mirrors the runtime Newtonsoft serializer ( #198 )' ( #201 ) from fix/198-openapi-casing into main
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Docs update reminder (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-09 18:19:20 +00:00
timothy
8a263e7c93
Merge pull request 'fix(api): existence-check rerun-collection selectedId per selection type ( #193 )' ( #200 ) from fix/193-rerun-existence into main
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Docs update reminder (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
2026-07-09 18:19:08 +00:00
timothy
af17dafcab
Merge pull request 'feat: SPA playback troubleshooting screen + status/subtitles/stream-selectors endpoints ( #145 )' ( #199 ) from feat/145-troubleshooting-spa into main
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / Docs update reminder (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-09 06:21:03 +00:00
timothy
4c58e19b04
Merge pull request 'docs+ci: harden docs-first rule + non-blocking parity-doc reminder' ( #196 ) from docs/guardrails-docs-first into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m53s
Build ErsatzTV Image / Docs update reminder (push) Has been skipped
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 9m24s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-08 21:06:31 +00:00
timothy
81bcfec8ad
Merge pull request 'feat: playlist CRUD API + SPA editor ( #153 )' ( #195 ) from feat/153-playlists into main
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Has been cancelled
Build ErsatzTV Image / Build & test (.NET) (push) Has been cancelled
2026-07-08 20:09:06 +00:00
timothy
35e5799cd6
docs(ci-cd): runner relocated off bumblebee to ci-runner VM 127 (server-management#570)
...
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Failing after 16m15s
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 37m23s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
Update stale jazz/bumblebee runner references: concurrency note, amd64
host note, EF-migration mysql-service network (now per-job, not
downloadswarm), and registry insecure-registry host.
2026-07-08 19:09:49 +00:00
timothy
636b680a29
Merge pull request 'feat(spa): multi-collection & rerun-collection editor screens ( #151 , #152 )' ( #194 ) from feat/151-152-spa-editors into main
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Failing after 15m14s
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 15m14s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-08 18:22:00 +00:00
timothy
b37c2298b5
Merge pull request 'ci: speed up build pipeline (NuGet cache, shallow checkout, jar layer reorder) ( #190 )' ( #192 ) from feat/190-ci-cache into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m46s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m52s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m28s
2026-07-08 17:54:25 +00:00
timothy
1c035cc94f
Merge pull request 'feat(api): REST CRUD for multi-collections and rerun-collections ( #151 , #152 )' ( #188 ) from feat/multi-rerun-collections-api into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m36s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m39s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m55s
2026-07-08 16:54:35 +00:00
timothy
ca1265214e
Merge pull request 'feat(api): GET /api/collections/{id}/items (paged) — full collection contents ( #155 )' ( #189 ) from feat/collections-api into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m45s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m55s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 7m18s
2026-07-08 16:38:24 +00:00
timothy
311411fa38
Merge pull request 'feat: quick wins — security-registry scan, Trakt SPA link, parallel search, dead "New Group" sweep' ( #187 ) from feat/quick-wins into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m44s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m55s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m3s
2026-07-08 06:03:24 +00:00
timothy
a7d3fc3055
Merge pull request 'docs: testing map + generated endpoint index ( #185 )' ( #186 ) from feat/185-docs-part2 into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m55s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m59s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-08 05:52:30 +00:00
timothy
dbda2d8991
Merge pull request 'feat(web+api): media detail endpoints+pages, image folder browser ( #141 , #161 items 3+5)' ( #183 ) from feat/141-media-detail into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m21s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m30s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m20s
2026-07-07 21:08:43 +00:00