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
timothy
1c883ac601
Merge pull request 'feat(web+api): block-playout history + sequential-YAML validator ( #145 , #158 items 4–5)' ( #182 ) from feat/145-block-history into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m29s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m44s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m9s
2026-07-07 20:32:31 +00:00
timothy
3ec3ab5fe0
Merge pull request 'fix(web+api): library picker artwork URLs + season drill-in instead of tile flooding ( #180 )' ( #181 ) from fix/180-library-picker into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m43s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m43s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m0s
2026-07-07 20:00:38 +00:00
timothy
c480fbe8d5
Merge pull request 'feat(web+api): playout alternate schedules + templates editors, default-deco read-side ( #144 S6, #162 )' ( #179 ) from feat/144-s6-playout-editors 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-07 19:03:10 +00:00
timothy
4ea5273770
Merge pull request 'feat(web+api): deco templates ( #144 S4, #162 )' ( #175 ) from feat/144-s4-deco-templates into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m24s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m38s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m4s
2026-07-07 18:06:36 +00:00
timothy
0c355e1132
Merge pull request 'feat(web+api): decos + deco groups, playout default deco, playlist/search pickers ( #144 S3, #162 )' ( #174 ) from feat/144-s3-decos into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m25s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m39s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m2s
2026-07-07 17:42:30 +00:00
timothy
86f280f9d0
Merge pull request 'feat(web+api): scheduling templates + block/template copy ( #144 S2, #162 )' ( #173 ) from feat/144-s2-templates into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m42s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m3s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m58s
2026-07-07 17:00:45 +00:00
timothy
3b7d5fd5a1
Merge pull request 'feat(web+api): blocks CRUD, items editor & preview ( #144 S1, #162 )' ( #171 ) from feat/144-s1-blocks into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m27s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m46s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m16s
2026-07-07 16:25:25 +00:00
timothy
a228927b4f
Merge pull request 'feat(web+api): playout create for all kinds + detail updates ( #144 S5, #162 )' ( #170 ) from feat/144-s5-playout-create into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m11s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m30s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m21s
2026-07-07 16:09:56 +00:00
timothy
3c37ec5f38
Merge pull request 'feat(web+api): media browse, search & trash for SPA parity ( #141 )' ( #168 ) from feat/141-media-browse into main
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-07 14:20:23 +00:00
timothy
117afa310e
Merge pull request 'test(web): make Libraries scan-polling tests deterministic ( fixes #157 )' ( #169 ) from fix/157-flaky-scan-polling into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m8s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m36s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m14s
2026-07-07 14:02:31 +00:00
timothy
063dae731f
Merge pull request 'feat(web+api): Trakt lists screen + REST API for SPA parity ( #142 )' ( #167 ) from feat/142-trakt-lists into main
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 1m18s
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-07 13:31:05 +00:00
timothy
e0f36a12fb
Merge pull request 'feat(web+api): FFmpeg profile, filler preset & watermark editors for SPA parity ( #143 )' ( #166 ) from feat/143-transcoding-editors into main
Build ErsatzTV Image / Build & test (.NET) (push) Failing after 1m14s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 3m28s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been skipped
2026-07-07 13:06:38 +00:00
timothy
e0a860e577
Merge pull request 'feat(web+api): logs & troubleshooting screens for SPA parity ( #145 )' ( #165 ) from feat/145-logs-troubleshooting into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 3m51s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m16s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m56s
2026-07-07 12:00:28 +00:00
timothy
d58deddc48
Merge pull request 'feat(web): collections management screen — manual + smart collections ( #140 )' ( #156 ) from feat/140-collections-screen 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-07 10:54:19 +00:00
timothy
fcdecd16c0
Merge pull request 'feat(web): dedicated channel edit screen ( #146 )' ( #154 ) from feat/146-channel-edit into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m30s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m50s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m52s
2026-07-07 10:40:17 +00:00
timothy
2b09bffab8
Merge pull request 'feat(web): Classic UI link in Settings + ChicoryTV cue on redirecting Blazor nav links ( #147 )' ( #150 ) from feat/147-classic-ui-link into main
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-07 10:40:09 +00:00
timothy
7e5a6b75ce
Merge pull request 'chore(deps): update dependency entityframeworkprofiler.appender to 6.0.6053' ( #132 ) from renovate/entityframeworkprofiler.appender-6.x into main
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-07 09:58:02 +00:00
timothy
fbb659b19f
Merge pull request 'chore(deps): apply open Renovate patch updates' ( #61 ) from issue22-renovate-dashboard into main
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-07 09:57:24 +00:00
timothy
d04769ccdb
Merge pull request 'feat(web): SPA cutover — root route ( #91 )' ( #148 ) from feat/91-cutover into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m14s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m42s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m23s
2026-07-07 09:12:50 +00:00
timothy
65b1a5e38c
Merge pull request 'feat(web): ChicoryTV rebrand ( #90 )' ( #139 ) from feat/90-rebrand into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m9s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m39s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m6s
2026-07-07 08:11:34 +00:00
timothy
17f49304e5
Merge pull request 'feat(web): Settings screen ( #93 )' ( #138 ) from feat/93-settings into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m12s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m34s
Build ErsatzTV Image / Build & push image (amd64) (push) Has been cancelled
2026-07-07 07:34:47 +00:00
timothy
82a93ea3be
Merge pull request 'fix(deps): bump Scriban.Signed 6.5.2 → 7.2.5 (GHSA-5wr9-m6jw-xx44)' ( #137 ) from fix/scriban-ghsa-5wr9 into main
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 4m24s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 4m54s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m54s
2026-07-07 07:09:56 +00:00
timothy
e1860785cc
Merge pull request 'feat(web): Channel Builder ( #89 )' ( #136 ) from feat/89-channel-builder 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-06 21:40:44 +00:00