timothy and Claude Opus 4.8
216130b4d7
fix( #172 ): API hardening — null-name 500s, duplicate template items, unreachable 404
...
Clears the still-live findings from #172 (verified against main; #2/#4/#7 and the
auth/search/Trakt tail were already deliberate-documented or fixed since 2026-07-07).
- Null/empty Name → 500 (10 create/replace handlers). Block/Template/DecoTemplate/Deco
Create+Replace/Update + UpdateFFmpegProfile did `request.Name.Length > 50` on a
client-nullable string → unhandled NullReferenceException → HTTP 500 (no global
exception filter). Now `string.IsNullOrWhiteSpace(request.Name) || .Length > 50` →
422; also rejects empty/whitespace names, matching the group-create handlers'
NotEmpty behavior. CreatePlaylist coalesces null→"" at the DTO so it was an
empty-name persist, not a 500; guarded the same way.
- ReplaceTemplateItems overlap validation iterated with an `item == otherItem`
record value-equality skip, so two exact-duplicate items were value-equal and
bypassed the intersection check (both persisted). Now index-based (i != j) so
duplicates register as a self-intersection and are rejected 422.
- Trimmed the unreachable 404 ProducesResponseType from POST /api/blocks/groups and
POST /api/templates/groups (a create has no parent lookup that can 404); v1.json
regenerated.
- Regression tests: all 10 name-guard paths + the duplicate-items path (19 cases).
- Docs: decisions.md entry + api-conventions.md §3b null-safe-validation bullet.
fixes #172
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-13 01:16:52 +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
Jason Dove and GitHub
e10b28bc0b
add normalization options ( #2802 )
...
* add new fields to database
* update editor
* audio and video normalization settings appear to work
* implement optional color normalization
* fix transcoding tests
* update changelog
2026-01-26 23:43:56 -06:00
Jason Dove and GitHub
ccb917d0df
add ffmpeg profile pad mode ( #2775 )
...
* add ffmpeg profile pad mode
* update changelog
2026-01-15 09:39:45 -06:00
Jason Dove and GitHub
0af81ad839
add target loudness to ffmpeg profile ( #2727 )
...
* add target loudness to ffmpeg profile
* fix filter
2025-12-19 14:46:17 -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
d0505cd5c5
add better check for interlaced content ( #2620 )
2025-11-10 06:39:04 -06:00
Jason Dove and GitHub
132466b3d3
add avisynth script support to all local libraries ( #2612 )
...
* detect avisynth demuxer
* cache ffmpeg capabilities
* check for working avisynth
* scan avs files in all local libraries
* update changelog
2025-11-07 20:48:54 -06:00
Jason Dove and GitHub
053b3cd1d7
add mpegts script system ( #2609 )
...
* add basic mpegts script
* use custom mpegts script
* update changelog
2025-11-07 13:20:17 -06: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
4cb98242ba
do not allow deleting default ffmpeg profile ( #2490 )
...
* remove dead code
* do not allow deleting default ffmpeg profile
2025-10-06 06:11:36 -05:00
Jason Dove and GitHub
a02aa37957
do not delete ffmpeg profile used by channel ( #2484 )
2025-10-04 08:29:07 -05:00
Jason Dove and GitHub
287adc34b5
add qsv av1 encoder ( #2471 )
2025-09-30 13:13:26 -05:00
Jason Dove and GitHub
e3af0f0b69
add nvidia av1 encoder ( #2469 )
2025-09-30 11:43:12 -05:00
Jason Dove and GitHub
ea008776b1
more nvidia 10-bit fixes ( #2426 )
...
* fix playback with invalid ffmpeg profile
* fix 10 bit output with nvidia and graphics engine
2025-09-16 14:44:22 +00:00
Jason Dove and GitHub
1c07df5bc3
use cancellation tokens in many places ( #2350 )
...
* use cancellation tokens everywhere
* more cancellation tokens
2025-08-27 03:20:35 +00:00
Jason Dove and GitHub
5d081ceeff
fix editorconfig and run code cleanup ( #2324 )
...
* fix formatting rules
* reformat ersatztv
* reformat ersatztv.application
* reformat ersatztv.core
* refactor ersatztv.core.tests
* reformat ersatztv.ffmpeg
* reformat ersatztv.ffmpeg.tests
* reformat ersatztv.infrastructure
* cleanup infra mysql
* cleanup infra sqlite
* cleanup infra tests
* cleanup ersatztv.scanner
* cleanup ersatztv.scanner.tests
* sln cleanup
* update dependencies
2025-08-16 14:44:48 +00:00
Jason Dove and GitHub
0489741123
add videotoolbox capabilities ( #2239 )
...
* implement videotoolbox hardware capabilities
* add videotoolbox troubleshooting info
* update changelog
2025-08-02 17:16:24 +00:00
Jason Dove and GitHub
7e30444857
dependencies and code cleanup ( #2117 )
...
* fix validation in new form layout
* pin mediatr to last oss version
* update dependencies
* cleanup code in core
* cleanup code in ffmpeg
* cleanup code in infra
* cleanup code in scanner
* cleanup code in application
* cleanup main code
* cleanup test code
* solution-wide code cleanup
2025-07-06 15:56:17 +00:00
Jason Dove and GitHub
ea46a7a5ca
add tonemap algorithm setting to ffmpeg profile ( #2039 )
2025-06-15 00:38:37 +00:00
Jason Dove and GitHub
759052c725
add vaapi display option to ffmpeg profile ( #1948 )
...
* add vaapi display option
* fix vaapi capabilities cache key
* update logging
2024-11-25 13:14:21 -06:00
Jason Dove and GitHub
242a7ae382
add b-frames option to ffmpeg profile ( #1726 )
...
* add b-frames option to ffmpeg profile
* update dependencies
* cleanup
2024-05-24 08:50:11 -05:00
Jason Dove and GitHub
b9a7ad2f5a
add video presets for nvenc, qsv, software h264 and hevc encoders ( #1688 )
...
* add video preset to ffmpeg profile
* add some hevc video presets
2024-04-23 14:26:30 -05:00
Jason Dove and GitHub
c1d6ddcc57
add h264 profile option to ffmpeg profile ( #1686 )
...
* add video profile for nvenc/software h264 encoders
* add h264 profile for all other encoders
* update changelog
2024-04-22 22:03:18 -05:00
Jason Dove and GitHub
087901d177
adjust block unique constraint ( #1634 )
...
* upgrade dependencies
* allow blocks with same name in different groups
* code cleanup
2024-03-05 10:39:06 -06:00
Jason Dove and GitHub
231a214223
add new subtitle settings ( #1590 )
2024-02-01 11:45:22 -06:00
Jason Dove and GitHub
12234c3e21
allow shuffling block items ( #1571 )
...
* allow shuffling block items
* fix drop down search results
2024-01-23 22:42:28 -06:00
Jason Dove and GitHub
694b6bbd91
scaling behavior and normalize loudness ( #1439 )
...
* update changelog [no ci]
* add ffmpeg profile scaling behavior
* update dependencies
* add normalize loudness mode
* update changelog
2023-09-21 02:46:43 -05:00
Jason Dove and GitHub
245c4ec359
code analysis and cleanup ( #1411 )
...
* cleanup scanner project
* cleanup infrastructure projects
* cleanup ffmpeg project
* cleanup core project
* cleanup app project
* cleanup main project
* update dependencies
* code cleanup
2023-09-03 06:23:42 -05:00
Jason Dove and GitHub
147ab6143d
hls direct mkv container ( #1292 )
...
* use mkv container for hls direct
* add setting for mp4/mkv container with hls direct
* cleanup
* update changelog
2023-06-06 10:21:09 -05:00
Jason Dove and GitHub
03df2a6c8a
overdue code cleanup ( #1271 )
2023-05-10 13:18:18 -05:00
Jason Dove and GitHub
2689a67eb8
qsv and vaapi fixes ( #1139 )
...
* lots of qsv fixes
* update changelog
* fix qsv mpeg2
* vaapi fixes
* update changelog
* upgrade mudblazor
* fix bug with undefined input colorspace
2023-01-29 10:00:52 -06:00
Jason Dove and GitHub
ab1c67e60e
memory improvements ( #1127 )
...
* regularly release memory
* don't aggressively GC while legacy streaming
* update changelog
2023-01-22 09:16:24 -06:00
Jason Dove and GitHub
7439ded43d
normalize bit depth ( #1031 )
...
* normalize bit depth and color for nvenc
* fix hls direct
* update changelog
* add bit depth option to ffmpeg profile
2022-11-21 20:20:07 -06:00
Jason Dove and GitHub
f1be945423
add qsv extra hardware frames setting ( #950 )
...
* wip add qsv extra_hw_frames setting
* fix ffmpeg profile editor
* update changelog
2022-09-04 18:07:03 -05:00
3cb37003cb
UI rewrite - ffmpeg profiles ( #823 )
...
* ffmpeg profile functionality, sweetalert2
* add new files
* cleanup controller; remove unused classes
* apply formatting
* cleanup core project
* don't use bom
* whitespace
* remove generated css
* remove generated js/map
* Remove attempted linter fix, channels button, watermarks page. Fixed handlerror.
* Changed deleted confirmation to toast.
* Localized strings for language change. Modified Action icons to buttons and left default sizes. Changed Cancel to No where Yes is an option
* lint
Co-authored-by: Jason Dove <jason@jasondove.me >
2022-06-03 06:28:32 -05: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
df45b93819
burn in picture-based subtitles ( #718 )
...
* add subtitle mode setting
* start to add subtitle support
* cuda test
* move subtitle settings from ffmpeg profile to channel
* fix image-based subtitles
* experimental wip
* subtitle fixes
2022-03-31 18:15:57 -05:00
Jason Dove and GitHub
e697fd36e9
remove legacy transcoder logic option ( #717 )
2022-03-31 16:00:50 -05:00
Jason Dove and GitHub
aa2c914d8a
always transcode and normalize, except with HLS Direct ( #715 )
...
* remove transcode, normalize video, normalize audio settings
* cleanup
* update changelog
2022-03-28 18:25:33 -05:00
Jason Dove and GitHub
9b3c24559d
add deinterlace option to ffmpeg profile ( #709 )
...
* update dependencies
* add option to deinterlace video
2022-03-18 10:30:56 -05:00
Jason Dove and GitHub
d5a03963c0
use video and audio format instead of video and audio codec ( #696 )
2022-03-11 19:58:05 -06: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
ea72e7b689
use new transcoder logic by default ( #664 )
2022-03-01 14:29:47 -06:00
Jason Dove and GitHub
5a442a06a0
start to use new ffmpeg library ( #632 )
...
* start to add ffmpeg library
* start to hook ffmpeg lib into main app
* improvements
* more progress
* make pipeline builder configurable
* more options
* move more logic down into ffmpeg lib
* ffmpeg lib desired state refactoring
* add software scaling and padding
* add loudness normalization and software deinterlace
* add metadata output options
* add setsar filter
* use built-in scaling logic
* fixes
* initial nvidia support
* nvidia improvements
* support hls mode
* print old arguments at debug level
* fix package reference
* start to add qsv support
* formatting
* fix tests
* add timeout to transcode tests
* show successful ffmpeg arguments
* add vaapi support
* add more software decoders
* add experimental transcoder option
* call existing ffmpeg process service for unimplemented features
* fix nvidia mpeg2video bug
* update changelog
* ignore some neglected unit tests
2022-02-14 14:34:00 -06:00
Jason Dove and GitHub
534e2c4512
add hls segmenter initial segment count ( #616 )
2022-02-07 12:18:58 -06:00
Jason Dove and GitHub
f02b0ac345
re-introduce framerate normalization ( #610 )
2022-02-04 12:57:40 -06:00
Jason Dove and GitHub
7b73677bad
allow ffmpeg reports on windows ( #547 )
...
* enable troubleshooting reports on windows
* update changelog
* tweak changelog
2021-12-21 09:27:49 -06:00
Jason Dove and GitHub
0136de700c
add global and channel fallback filler ( #459 )
...
* configure channel and global fallback filler
* play random item from configured channel/global fallback filler as needed
2021-10-30 11:45:40 -05:00
Jason Dove and GitHub
d196308ee9
fix ffmpeg profile editing ( #421 )
2021-10-12 18:39:51 -05:00