StreamKeep v4.13.1
v4.13.1 — QA audit follow-up fixes
Post-v4.13.0 audit pass. One real defect in the background-finalize path plus pyflakes-level cleanup across main_window and the yt-dlp extractor.
Fixes
- [workers/finalize.py] Stale snapshot key no longer aborts finalize. A single unknown/stale
PostProcessorattribute in the snapshot dict wouldAttributeError-crash the entire finalize pass before metadata was saved, silently eatingmetadata.json/NFO/chapters for that download. Both the snapshot-capture and snapshot-apply loops now guard withhasattr. - [ui/main_window.py] Fixed inverted
wait()in_clear_monitor_seed_worker(was waiting only when the seed worker was already not running — effectively a no-op). - [ui/main_window.py] Dead
finalize_totallocal removed, unusedreimport removed. - [ui/main_window.py] 5 placeholder-free f-strings repaired.
- [extractors/ytdlp.py] Dropped unused
subprocess/_CREATE_NO_WINDOWimports (dead since thehttp.run_capture_interruptiblemigration).
Validation
py_compile clean, pyflakes clean across touched files, headless StreamKeep + FinalizeWorker construction with a poisoned snapshot both pass. Frozen-exe smoke (2-process bootloader+app layout) — no regression.
Download
Windows: StreamKeep.exe attached. ffmpeg must be in PATH.