timothy and Claude Opus 4.8
c40ffefa99
feat(253): PR3 optimistic-concurrency fan-out — Diff + Scalar aggregates
...
Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 5s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 8m11s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 9m51s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Fans the frozen Block recipe (api-conventions §7a) across the five Diff/Scalar
replace-all endpoints, completing the #253 PR2→PR4 arc's implementable core:
- #6 Collection custom-order, #7 Playout alternate-schedules, #8 Playout templates
(shared Playout.Version), #9 MultiCollection, #10 RerunCollection — each: pre-check
412 as a standalone Either after validation (H2, subtype survives the Join flatten),
unconditional Version++ (M1), guarded save, controller If-Match/ETag/400/412, SPA
editor ETag round-trip + 412 conflict dialog.
- H1: the two Playout handlers' catch(Exception)→422 restructured so the guard's
PreconditionFailedError returns before the catch (412, not 422).
- M2: RerunCollection/Collection refresh runs unconditionally on save; MultiCollection
keeps its name-only→no-rebuild optimization by bumping on the first (name) save.
- H3: UpdateDefaultDecoHandler bulk-bumps Playout.Version via .SetProperty.
- Shared ConcurrencyHeaders.MalformedIfMatchProblem() for the 400 guard.
- Deferred (→ #269 ): same-root non-bulk sibling config writers' ETag rotation.
Tests: per-handler pre-check/bump concurrency tests (Playout ×2 incl. non-vacuous
racing-save backstop, Rerun, Multi incl. name-only-no-rebuild M2, Collection);
controller tests get a DefaultHttpContext for the header read/write. Docs:
api-conventions §7a fan-out status, spa-conventions §4a list-editor note, decisions.
Refs #253
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-11 19:23:48 +02:00
timothy and Claude Fable 5
50b13afac3
feat(api): REST endpoints for playout alternate schedules and templates ( #144 S6 ( #162 ))
...
Adds per-playout REST for classic-playout alternate schedules and
block-playout templates, plus the default-deco read-side deferred from S3:
- GET/PUT /api/playouts/{id}/alternate-schedules (Classic only; 422 otherwise)
- GET/PUT /api/playouts/{id}/templates (Block only; 422 otherwise)
- PlayoutResponseModel gains decoId/decoName (GetPlayoutById includes Deco)
PUT assigns Index from array order (top = highest priority, last = catch-all
default), mirroring the Blazor editors. Alternate-schedule PUT requires a
non-empty list and existing ProgramScheduleIds; template PUT requires existing
TemplateIds and any supplied DecoTemplateId. Regenerates the OpenAPI spec.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-07 20:29:29 +02:00
Jason Dove and GitHub
598de5d5d6
add playout build status ( #2476 )
...
* add playout build status
* show build status in playout list
* update changelog
2025-10-01 21:40:39 -05:00
Jason Dove and GitHub
53f281ce32
add xmltv block behavior setting ( #2336 )
...
* replace playout externaljsonfile and templatefile with schedulefile
* add scripted schedule-based playout
* wip - not functional yet
* temp disable scripted playout creation
* allow fast-forwarding block playouts
* add xmltv block behavior setting
2025-08-23 20:16:12 +00:00
Jason Dove and GitHub
e06ee54070
rename yaml playout to sequential schedule ( #2335 )
...
* clarify some schedule and playout terms
* more renaming
2025-08-23 14:27:32 +00:00
Jason Dove and GitHub
b52159e8db
rename channel progress mode to playout mode ( #2254 )
2025-08-04 19:27:22 +00:00
Jason Dove and GitHub
174c743cb7
more mobile layout updates ( #2141 )
...
* update trash layout
* cleanup block and yaml playout editors
* spacing cleanup
* rework multi-collection editor
* rework deco template editor
* rework template editor
2025-07-12 15:50:44 +00:00
Jason Dove and GitHub
d9a7615cf6
add experimental playout template system ( #1808 )
...
* add template playout kind
* add template scheduler count
* implement pad to next
* only allow resetting template playouts
* update changelog
2024-07-26 08:34:18 -05:00
Jason Dove and GitHub
a8b658a5ea
add "on demand" channel progress mode ( #1790 )
...
* update dependencies
* add channel progress mode
* implement on demand channel progress
* update changelog
2024-07-16 12:21:52 -05:00
Jason Dove and GitHub
0330b9326d
add external json playout type for dizquetv interop ( #1539 )
...
* add external json playout
* basic local playback works
* fallback to streaming from plex
* update external json file
* update changelog
2024-01-08 19:45:43 -06:00
Jason Dove and GitHub
c02b83d0d6
code cleanup ( #743 )
...
* update tools
* run code cleanup
* update dependencies
2022-04-19 17:47:18 -05:00
Jason Dove and GitHub
1ab98578ab
refactor namespaces and imports ( #670 )
...
* re-namespace
* optimize usings
* more usings
* more of the same
* more implicit/global usings
* cleanup all usings
* minor fixes
2022-03-03 15:36:07 -06:00
Jason Dove and GitHub
944f1e4307
add scheduled playout rebuild ( #376 )
...
* configure scheduled playout rebuild
* implement scheduled playout rebuild
* remove variable
2021-09-18 11:23:58 -05:00
Jason Dove and GitHub
0fb5bfde58
refactor dbcontext lifetime ( #258 )
...
* refactor create playout handler
* refactor get all playouts handler
* refactor delete playout handler
* remove dead code
* ignore unnamed artists for collections
* more repository cleanup
* more schedule items refactoring
* more playout refactoring
* refactor playout builder
* refactor ffmpeg profiles
* more ffmpeg profile refactoring
* rework resolutions
* refactor media collections
* refactor config elements
* update changelog
* more cleanup
2021-06-13 20:19:10 -05:00