What's Changed
- perf(deps): update go-fft to v0.28.1 by @Audionut in #801
- perf(ci): shard cross-platform checks and trim development tests by @Audionut in #806
- fix(webui): recover screenshot navigation after duplicate review by @Audionut in #800
- feat(webui): compact audio and subtitle language selectors by @Audionut in #807
- fix(lst): assume 5.1 for six-channel FLAC without layout by @Audionut in #802
- fix(btn): surface indefinite IP-ban authentication feedback by @Audionut in #804
- docs: streamline scoped agent and contributor guidance by @Audionut in #811
- fix(imagehosting): respect encoded upload request limits by @Audionut in #812
- fix(config): publish complete YAML export snapshots by @Audionut in #821
- fix(workflow): refresh snapshots after terminal operation cleanup by @Audionut in #818
- fix(cli): remove obsolete not-anime flag by @Audionut in #824
- fix(workflow): confirm selected-source modifications once by @Audionut in #820
- fix(cli): apply checked tracker approval defaults by @Audionut in #849
- fix(deps): remediate vulnerability scan findings by @Audionut in #851
- fix(metadata): use the first pack episode for HDR eligibility by @Audionut in #852
- feat(cli): persist named queues and item progress by @Audionut in #853
- feat(settings): clarify names and add contextual help by @Audionut in #828
- fix(ar): convert center tags in transferred descriptions by @Audionut in #841
- fix(ptp): prohibit unsupported full DVD disc uploads by @Audionut in #868
- fix(metadata): respect measured resolution height by @Audionut in #808
- fix(bdinfo): integrate the current collector API foundation by @Audionut in #830
- feat(metadata): support decrypted 3D Blu-ray ISO input by @Audionut in #831
- fix: isolate test state and preserve CLI startup fallback by @Audionut in #874
- feat(trackers): support explicit intended replacement uploads by @Audionut in #809
- fix(metadata): accept plain season correction numbers by @Audionut in #880
- fix(cli): report blocked media before tracker feedback by @Audionut in #873
- fix(webui): stop automatic dry-run retries by @Audionut in #839
- fix(input): gate dupe navigation on saved required facts by @Audionut in #875
- test(input): verify saved source correction after refresh by @Audionut in #883
- feat(webui): extend contextual help across release tools by @Audionut in #876
- fix(torrent): preserve the folder around one selected video by @Audionut in #814
- fix(metadata): restore release artifact ownership by @Audionut in #863
- fix(metadata): preserve exact tracker external IDs by @Audionut in #867
- fix(language): normalize identities across preparation and trackers by @Audionut in #871
- fix(metadata): preserve independent manual provider selections by @Audionut in #881
- fix(metadata): preserve explicit TVDB naming years by @Audionut in #886
- fix(deps): resolve vulnerable WebUI minimatch consumers by @Audionut in #890
- fix(images): honor preferred host during automatic preparation by @Audionut in #825
- test(workflow): stabilize Windows active input timing by @Audionut in #893
- feat(settings): add safe integration connection tests by @Audionut in #891
- feat(metadata): improve disc edition matching and progress by @Audionut in #889
- fix(trackers): preserve package inventory and 3D duplicate evidence by @Audionut in #888
- fix(torrent): prefer compatible torrent reuse by @Audionut in #895
- fix(cli): continue queues past unrelated unresolved submissions by @Audionut in #894
- perf(db): store workflow ownership and snapshots separately by @Audionut in #898
- fix(screenshots): share Dolby Vision rendering and fallback outcomes by @Audionut in #901
- feat(metadata): inspect Blu-ray listings on demand by @Audionut in #902
- fix(ptp): leave a blank line between screenshots by @Audionut in #900
- fix(deps): update go-bdinfo pin for SSIF progress by @Audionut in #908
- fix(webui): include collected description images by default by @Audionut in #827
- fix(workflow): inject prepared torrents during explicit dry runs by @Audionut in #819
- fix(languages): allow unknown title language while preserving dub rules by @Audionut in #906
- fix(cli): explain soundtrack review with prepared evidence by @Audionut in #907
- fix(cli): explain prepared upload decisions by @Audionut in #913
- feat(cli): explain local input readiness by @Audionut in #914
- fix(trackers): preserve protocol submission outcomes by @Audionut in #869
- fix(ant): detect per-track audio flags and require unique ids by @Audionut in #910
- fix(audio): clarify analysis logs and report partial outcomes by @Audionut in #915
- fix(cli): explain standalone HDR failures by @Audionut in #916
- fix(workflow): retain tracker scope in composite uploads by @Audionut in #921
- fix(docs): refresh dependencies and include lockfile in OSV scans by @Audionut in #923
- fix(e2e): preserve decoded HDR fixture frames by @Audionut in #924
- fix(cli): correct live-test and non-submitting mode help by @Audionut in #912
- fix(docs): clear documentation dependency scan findings by @Audionut in #927
- fix(workflow): recover incompatible stored continuations by @Audionut in #926
- feat(lst): add advisory API key expiry guidance by @Audionut in #928
- fix(trackers): retain destination links in torrent comments by @Audionut in #929
- feat(metadata): enrich provider candidates and title search by @Audionut in #931
- test: replace scheduler-dependent timing assumptions by @Audionut in #935
- feat(cli): select metadata provider matches by @Audionut in #937
- fix(cli): coordinate cancellation and input cleanup by @Audionut in #930
- fix(workflow): confirm cancellation across browser pages by @Audionut in #934
- fix(metadata): default unresolved prepared categories to movie by @Audionut in #936
- fix(workflow): retain compatible per-tracker duplicate results by @Audionut in #946
- test(torrentclient): synchronize URL fallback cancellation by @Audionut in #942
- fix(cli): explain retained tracker and client outcomes by @Audionut in #943
- feat(webui): surface release correction warnings by @Audionut in #950
- test(e2e): drain pending scroll before keyboard help by @Audionut in #947
- fix(metadata): prefer tmdb spoken languages for tracker rules by @Audionut in #948
- test(webserver): control session log stop boundaries by @Audionut in #951
- fix(cli): explain preparation failures and retained HDR outcomes by @Audionut in #952
- feat(ulcx): fetch banned groups from the API by @Audionut in #960
- fix(workflow)!: honor supplied infohash during preparation by @Audionut in #957
- fix(webui): reset cancellation feedback when rerunning work by @Audionut in #963
- fix(hdb): allow subtitle waivers and restore compact audio labels by @Audionut in #940
- fix(hdr): classify summary publication failures as output errors by @Audionut in #969
- fix(cli): explain recovery and separate image progress by @Audionut in #968
- fix(azfamily): bind upload hash to captured torrent artifact by @Audionut in #967
- fix(cli): retry invalid programme language answers by @Audionut in #973
- feat(torrent)!: retain compatible base variants per tracker by @Audionut in #972
- fix(torrentclient): discover containing torrents by top subfolder by @Audionut in #978
- fix(emuw): use the current tracker domain by @Audionut in #971
- fix(build): update Go to 1.27.4 by @Audionut in #983
- feat(emuw): include provider year in TV names by @Audionut in #977
- feat(torrent): support mkbrr context cancellation by @Audionut in #981
- fix(cli): explain image-host reuse and fallback by @Audionut in #970
- fix: honor explicit duplicate-check waivers across stored results by @Audionut in #982
- fix(trackers): accept confirmed original multilingual audio by @Audionut in #976
- fix(config): ignore inactive compatibility settings in workflows by @Audionut in #956
- fix(bjs): honor anonymity and group visibility preferences by @Audionut in #945
- fix(metadata): preserve partial-season identity and coverage by @Audionut in #938
- feat(debug): run real checks without tracker submission by @Audionut in #984
- docs: audit CLI and public guides for v0.4.2 by @Audionut in #991
Full Changelog: v0.4.1...v0.4.2