timothy and Claude Fable 5
83c9122b6f
wip: partial implementation salvaged from interrupted workflow run
...
Untrusted draft — no build/test had run yet. Review before building on it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-03 21:07:21 +02:00
timothy
0eaedb9cf6
feat(api): add route names and handler tests for picker list endpoints ( #105 )
...
The WIP GET /api/filler-presets, /api/watermarks, and
/api/graphics-elements endpoints omitted the Name= route attribute
used by the other API GET actions (e.g. FFmpegProfileController). Add
Name = "GetFillerPresets" / "GetWatermarks" / "GetGraphicsElements" for
consistency.
Also add handler tests (FillerPresetHandlerTests, WatermarkHandlerTests,
GraphicsElementHandlerTests) covering the GetAll*ForApi handlers using
the InMemoryTvContext harness: multi-row projection to (Id, Name) DTOs,
the empty-DB case, and the graphics-element ordering rule (named
elements sort before elements whose projected Name equals FileName).
2026-07-02 22:06:19 +02:00
timothy and Claude Fable 5
8912686a47
wip: partial implementation salvaged from interrupted workflow run
...
Untrusted draft — no build/test had run yet. Review before building on it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 21:27:40 +02:00
timothy
527332a3ac
feat(api): default-deny mutating API writes
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 4m36s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m37s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Refs #43
2026-06-30 18:49:35 +02:00
timothy
861827dcbc
feat(api): standardize ffmpeg profile endpoints
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 5m12s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 6m13s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
refs #38
2026-06-30 07:29:47 +02:00
timothy
b53b06c615
feat(api): add playout REST endpoints
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m34s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m48s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
fixes #37
2026-06-29 20:31:18 +02:00
timothy
b552905799
feat(api): add schedule REST endpoints
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m40s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m52s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Refs #36
2026-06-29 08:13:14 +02:00
timothy
c113142a3d
fix(api): standardize error response contract
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m34s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m36s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
refs #46
2026-06-28 14:58:48 +02:00
timothy
82f3a1e633
docs(api): document collection REST response codes
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m39s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m33s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Refs #35
2026-06-28 09:03:59 +02:00
timothy
fb3f2856da
feat(api): add collections REST endpoints
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 4m5s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m9s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Refs #35
2026-06-27 21:43:11 +02:00
timothy and Claude Opus 4.8
8f7d240fc8
feat(api): REST foundation + Channels CRUD ( #34 )
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m43s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m58s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 3m44s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m0s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m41s
First slice of the REST API (ersatztv#2). Idiomatic REST over existing MediatR handlers; design in docs/rest-api.md.
Foundation: NotFoundError : BaseError (Core) to split 404 from 422; ApiResults mapping helpers (Either/Option -> 201+Location / 200 / 204 / 404 / 422), additive (existing *ToActionResult untouched); ApiKeyAuthorizationFilter (optional X-Api-Key on mutating actions, gated by Api:WriteKey, no-op when unset) — independent of the IPTV JWT toggle so Jellyfin/Dispatcharr reads are unaffected, applied at controller-class level so every mutating action incl. ResetPlayout is covered fail-safe.
Channels: POST /api/channels (201+Location), PUT/{id} (200/404), DELETE/{id} (204/404), GET/{id} (200/404). Request DTOs -> existing commands; responses reuse ChannelViewModel. Ported page-only validations into handlers (ShowInEpg-when-disabled, external-logo-URL, Group NotEmpty) + FFmpegProfile/Watermark/Filler existence on update for create-parity. Fixed a latent 500: the .Filter(c>0) existence pattern threw TaskCanceledException on not-found; rewritten to AnyAsync.
Tests (NUnit, TZ=UTC): handler success/404/422, ApiResults mapping, API-key filter, controller status/Location/mapping, a controller-security regression net, and a create->read->delete EF integration test on a new in-memory SQLite harness. ErsatzTV.Tests 46/46, Architecture 5/5.
Refs #34
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-27 15:51:06 +02:00
Jason Dove and GitHub
35d24ffea6
cleanup artwork cache folder ( #2779 )
...
* cleanup artwork cache folder
* fixes
* ignore watermarks that no longer exist on the file system
2026-01-16 13:38:31 -06:00
5c42609527
Add base URL to variant playlists ( #2755 )
...
* Add PathBase to variant playlists
* add commented code to help with testing
* update changelog
---------
Co-authored-by: Jason Dove <1695733+jasongdove@users.noreply.github.com >
2026-01-05 09:13:04 -06:00
Jason Dove and GitHub
a1f9b86fc1
add download media sample button to playback troubleshooting ( #2709 )
...
* add download media sample button to playback troubleshooting
* fixes
2025-12-09 11:49:07 -06:00
Jason Dove and GitHub
54606c76f9
framerate improvements ( #2692 )
...
* framerate improvements
* fixes
2025-12-02 12:20:09 -06:00
Jason Dove and GitHub
cc287ffc6e
fix hls direct streams remaining open ( #2660 )
2025-11-24 22:40:26 -06:00
Jason Dove and GitHub
ec0d8ea6ac
work around sequential schedule validation limit ( #2655 )
...
* remove readalltext
* remove unused method
* remove fileexists
* remove folderexists
* remove readalllines
* remove fake local file system
* show playlist name in playout build errors
* add basic sequential schedule validator tests
* work around sequential schedule validation limit
2025-11-24 12:08:43 -06:00
Jason Dove and GitHub
42b35f7aae
add channel playback troubleshooter ( #2641 )
...
* fix motion graphics loop when seeking
* add channel playback troubleshooter
* fix errors
2025-11-12 13:21:18 -06:00
Jason Dove and GitHub
453737a521
add custom_title to start_epg_group ( #2599 )
2025-11-04 16:08:07 -06:00
Jason Dove and GitHub
7a133d46da
fix remote stream scripts ( #2573 )
2025-10-28 12:57:13 -05:00
Jason Dove and GitHub
b1fbf651a2
log remote stream scripts ( #2572 )
2025-10-28 09:49:48 -05:00
Jason Dove and GitHub
0dbdcc3674
fix hls direct with jellyfin 10.11 ( #2570 )
2025-10-26 18:09:37 -05:00
Jason Dove and GitHub
a47510fef3
add aac (latm) audio format ( #2561 )
...
* add aac (latm) audio format
* update changelog
2025-10-23 15:56:13 -05:00
Jason Dove and GitHub
626048f9c3
change how scanner and main process communicate ( #2555 )
...
* report scanner progress using api
* process scanner search index updates through api
* update changelog
* update dependencies
2025-10-21 15:08:49 -05:00
Jason Dove and GitHub
2ef2b0299a
switch back from fmp4 to ts segments ( #2554 )
...
* restore pts offset calculation
* use ts segments again
* update changelog
2025-10-21 12:17:05 -05:00
Jason Dove and GitHub
d4353f6d42
add episode thumbnail to xmltv template ( #2550 )
2025-10-19 12:13:40 -05:00
Jason Dove and GitHub
ffe15629cb
consolidate streaming modes ( #2544 )
...
* consolidate segmenters
* let old segmenter mode query params continue to work
2025-10-18 10:54:30 -05:00
Jason Dove and GitHub
f41f4b19d4
wait for two initial segments in playback troubleshooting ( #2532 )
2025-10-14 11:45:11 -05:00
Jason Dove and GitHub
7c2083d3f2
add playback troubleshooting speed indicator ( #2521 )
...
* more api fixes
* add playback troubleshooting speed indicator
2025-10-13 11:25:56 -05:00
Jason Dove and GitHub
b851a7daba
api changes for ffmpeg profiles ( #2520 )
2025-10-13 06:44:32 -05:00
Jason Dove and GitHub
48e7c85f7b
api changes to support etvcli ( #2519 )
2025-10-12 10:13:30 -05:00
Jason Dove and GitHub
144b3fe80b
fix remote stream durations in playouts ( #2515 )
2025-10-11 08:30:24 -05:00
Jason Dove and GitHub
9016523757
cleanup some exceptions; add health check ( #2495 )
...
* handle artwork timeouts so they aren't reported
* catch some more cancellation errors
* add free space validation on startup
* add downgrade health check
* update dependencies
2025-10-07 09:50:55 -05:00
Jason Dove and GitHub
c39858b2d8
fix hls direct ( #2487 )
2025-10-04 15:36:36 -05:00
Jason Dove and GitHub
5c174eabdb
add playback troubleshooting logs ( #2475 )
2025-10-01 16:29:04 -05:00
Jason Dove and GitHub
18905a79dc
add stream selector to playback troubleshooting ( #2474 )
2025-10-01 11:10:38 -05:00
Jason Dove and GitHub
fac0f36d35
add codec info to multivariant playlist ( #2472 )
...
* add codec info to multivariant playlist
* upgrade dependencies
2025-09-30 13:58:24 -05:00
Jason Dove and GitHub
b46de50801
add hls segmenter fmp4 streaming mode ( #2468 )
...
* add streaming mode segmenter fmp4
* allow hevc channel preview
2025-09-30 10:04:02 -05:00
Jason Dove and GitHub
b790b5944c
fix external ssa subtitles from media servers ( #2450 )
2025-09-20 21:13:42 +00:00
Jason Dove and GitHub
ef5de99f9c
add create_playlist, pre_roll_on, pre_roll_off to scripted schedules ( #2387 )
2025-09-06 20:47:44 +00:00
Jason Dove and GitHub
e047812a68
rework some scripted schedule model names ( #2386 )
2025-09-06 18:52:34 +00:00
Jason Dove and GitHub
31355ab887
add pad_until_exact and wait_until_exact scripted schedule calls ( #2384 )
2025-09-06 15:43:07 +00:00
Jason Dove and GitHub
57e9b4d264
more api docs ( #2375 )
2025-09-04 18:00:48 +00:00
Jason Dove and GitHub
73b8d68a09
add existing api endpoints to scalar docs ( #2374 )
2025-09-04 16:36:26 +00:00
Jason Dove and GitHub
03921e1ff7
more docs reorganization ( #2373 )
2025-09-04 15:20:02 +00:00
Jason Dove and GitHub
70aae67873
reorganize scalar docs ( #2372 )
2025-09-04 14:59:17 +00:00
Jason Dove and GitHub
67cb931a47
fix verbs, add scalar docs ( #2371 )
2025-09-04 14:01:16 +00:00
Jason Dove and GitHub
704c1ec535
return context from scripted schedule api calls that modify the context ( #2370 )
2025-09-04 13:42:00 +00:00
Jason Dove and GitHub
03b4419f67
rework scripted schedules ( #2367 )
...
* start to reorganize scripted playout building
* add openapi
* add all content fns
* add playout instructions
* add control instructions
* add request models
* prevent build loop
* rename
* update changelog
* tweak changelog
2025-09-03 20:53:14 +00:00
Jason Dove and GitHub
51ec84c94a
fix block playout history regression ( #2343 )
...
* minor tweaks
* fix block change detection bug
* history cleanup cleanup
2025-08-25 16:09:20 +00:00