Repository navigation
v0.41: startup/version fixes and repository restructure - #75
Merged
Merged
Conversation
Uninstall cleanup and startup (earlier uncommitted v0.41 work): - Add the per-user cleanup helper (MLCUserCleanup) with a durable Programs path, legacy migration, reparse checks and failure teardown; wire it into the installer and build (EV-20260910-009/010). - Remove the empty HKLM parent key on uninstall (EV-20260910-003). - Center the window on the active screen at startup and drop the large empty-state logo; round app icon and wizard images. Review fixes, each proven by a red test first (EV-20260924-001..004): - Keep an oversized restored window's title bar on screen. - Stop nested modal error dialogs from the 100 ms UI timer on an unopenable file and on a failed next playlist item. - Do not restore native full screen, and do not save the PiP geometry, across restarts; keep maximized/full-screen when a second launch un-minimizes the window. - Menu "Add subtitle" and track selection now show the subtitle (real libmpv keeps sub-visibility off); scope the subtitle session per media so a stale sid cannot remove another track. - Playlist "Remove" ignores rows hidden by the search filter. - Thumbnail worker start failures no longer stall the queue. - Translate the volume OSD; percent, decimal and byte texts follow the language via a Qt-free app/number_text.py; one playback-speed list. Tests: pytest -q tests -> 5371 passed, 11 skipped (offscreen). Not yet verified in a real window or an installed build.
…eases - Run the uninstall-cleanup registration (child process, up to 30 s) in a daemon thread after the window is shown instead of on the GUI thread before it; worker exceptions are reported by type, never raised. - Serialise concurrent provisions with a per-user named mutex released by the OS on process death; a second provision returns busy instead of deleting the first one's temporary helper copy. - Version comparison: prerelease suffixes sort below the stable tag, trailing zeros and +build metadata do not change the version. - Log three user-visible silent failures (subtitle delay reset, subtitle hide on new media, previous subtitle track removal) by exception type. Each defect has a deterministic red test; translations and the architecture inventory are refreshed for the shifted lines.
Repository layout - Entry points move to app/ (app/main.py runs as a script or with -m), PyInstaller specs to packaging/ (inputs resolved from SPECPATH, not the current directory), dependency lists to requirements/, READMEs to .github/, Claude rules to .claude/CLAUDE.md (importing docs/process/AGENTS.md). - Every generated output goes under the ignored output/ folder: PyInstaller --distpath/--workpath, Inno OutputDir and sources, prepublish, source mirror staging, verify_build and the hosted build workflow. - Remove second_launch.py, a committed test artifact that carried a personal absolute path; mask the same path in the engineering audit and add a test that keeps the local profile path out of tracked files. Documentation - Split docs/ into process, release, policies, quality, video-format and history, with docs/README.md as the tested index. - Merge the two SignPath records, fold the video capability inventory into the acceptance plan, and move PACKAGING_PLAN's historical records and stale checklist to docs/history/PACKAGING_HISTORY.md. - Rewrite CONTINUITY compactly (137 lines, no line over 81 characters); closed and duplicated blocks are archived verbatim in CONTINUITY_HISTORY, and the continuity test now limits line length. - Record EV-20261003-001. No real PyInstaller/Inno build has run on the new paths yet; a stubbed spec execution test checks every input resolves from any directory.
…seek The hosted mpv stub never reports playback position. When the 100 ms UI timer fired inside the processEvents() right after the timeline click, update_overlay_state synchronised the slider back to position 0 although the seek had happened (PR #75 run 37137517782, time_pos 300). Reproduced deterministically with one forced update_ui(); product code unchanged. Record EV-20261003-002.
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
Four commits on top of
master:8c82677,33b19bc— earlier v0.41 evidence and playback/cleanup/localization hardening (not previously pushed).4964ddc— product fixes, each with a deterministic red test:+buildmetadata no longer sort above the stable release;bf4837e— repository and documentation restructure:Start.batandLICENSE(plus.gitignore/.gitattributes);app/, specs inpackaging/(inputs resolved fromSPECPATH), dependency lists inrequirements/, READMEs in.github/, Claude rules in.claude/CLAUDE.md, agent contract indocs/process/AGENTS.md;output/folder (PyInstaller--distpath/--workpath, Inno, prepublish, source mirror, hosted build workflow);docs/split into process/release/policies/quality/video-format/history with a tested index (docs/README.md); SignPath records merged; stale packaging history and checklist archived;CONTINUITY.mdrewritten compactly with every removed block archived verbatim;second_launch.pyremoved (committed test artifact with a personal absolute path) plus a test that keeps the local profile path out of tracked files.Tests
4964ddcalone (exported): 5384 passed; the only failure was the ledger-commit check, which needs a.gitdirectory.extract_translations.py --check,compileall,git diff --check,verify_ledger_append_only.pypass.Evidence boundary
Deterministic/offscreen only (
EV-20261003-001). No PyInstaller or Inno build has run on the new paths; a stubbed spec-execution test checks every input resolves from any working directory. No installed artifact contains these changes. Tools that only read a rootAGENTS.md(Codex) must be pointed todocs/process/AGENTS.md. Old root URLs forREADME.md,PRIVACY.mdandCODE_SIGNING_POLICY.mdnow 404; GitHub shows.github/README.mdon the repository page.