Repository navigation
fix: preserve recording retention when saving codecs - #1044
Merged
Merged
Conversation
3 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #946.
Preserve the authoritative legacy
max_streams_per_streamervalue when the existing recording codec control saves. The panel carries the loaded value into its update event and the recording service includes it in its explicit POST allowlist. Zero remains zero. Legacy callers without this field first recover it through GET; if that read cannot provide a value, saving fails rather than silently resetting retention.No backend/model/schema, UI option, styling, dependencies, build configuration, budget or workflow changes. Existing codec behavior is retained.
Verification
h264,h265saved through the visible control. Each survived navigation away/back and document reload. HTTP GET and 15 independent ORM session readbacks preserved all unrelated recording columns semantically, limit 7, and globalprefer_higher_quality=false. No fulfilled API responses, failed HTTP responses or page errors. Existing cleanup JSON normalization adds a null timeframe; policy values remain unchanged.None; codec router, persistence and Streamlink configuration generation are real. No capture, operator credentials, production DB or provider acceptance claimed.45ae3c056e0ef3f7c8996b7956202d86668f3811, tree3ac4ee83b1bb8ce8d97923f80dd3ccb85b621107: all 23 remote checks succeeded, including all seven repository-required checks from GitHub Actions App 15368. Tests run 41603427065: backend 1,092 passed / 20 skipped plus 12 migration tests; frontend 645 passed / 4 skipped, 45 foundation gates; browser suite 244 passed / 46 existing skips plus foundation 5+1+5. Integration job 125811896458 verified concurrent fresh PostgreSQL first boot, 48/48 distinct successful migrations, restart-stable key and the real HTTP surface.--rmtest containers, source/dependency/build copies and the owned Graphify cache were cleaned up after preserving evidence. The clean candidate worktree is retained for independent review and owner integration.Review boundary
Same-card independent review covers this retention/codec contract, not the unrelated #842 backend work or #950 player correction. No merge, release or deployment authorization is implied. Existing security alerts are not described as all-clean.
Owner integration acceptance
developat1a364a25433623ebad481deeeb769197c72e3e0d; candidate45ae3c056e0ef3f7c8996b7956202d86668f3811, tree3ac4ee83b1bb8ce8d97923f80dd3ccb85b621107. The CI merge reff010380369c09459424033d12b7ecc6002232a86has those two parents and the identical tested tree.prefer_higher_quality=false. Zero API fulfills/page errors/failed HTTP responses. Only provider-token lookup returnsNone; lifespan disabled, network isolated, no capture/production-auth/provider/device acceptance claimed.glob.fixAvailablediffers), identical pip report (75 dependencies, no findings), identical Bandit content except scan timestamp. Existing Dockerfile/ref alerts are not dismissed; no all-clean claim. MOCK retains only 38 gzip bytes of headroom.04f753760e9ffe3cd216cf001933668801f9c3aftodevelop. Actual merge tree/parents match the tested candidate. All three postmerge workflows completed/success: Tests 41610250599, Security 41610250455, existing develop automation 41610250552. Original Global recording codec selector does not read or persist the actual codec setting #946 is CLOSED/COMPLETED with all three criteria checked; exact completion evidence. Only Global recording codec selector does not read or persist the actual codec setting #946 delivery, not overall product acceptance; no manual release or deployment. Owned test containers/temp/worktree/verification branch cleaned; foreign resources preserved.