Skip to content

Land the Windows installer and tie up leftovers - #14

Open
jmjava wants to merge 4 commits into
masterfrom
cursor/windows-installer-c9d4
Open

jmjava wants to merge 4 commits into
masterfrom
cursor/windows-installer-c9d4

Conversation

@jmjava

@jmjava jmjava commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

PR #13 merged the source setup wizard, but the PyInstaller + Inno Setup commit stayed behind. This PR puts that installer on master and closes leftover holes from the GUI retirement.

Windows installer

python -m pip install -r requirements-build.txt
python scripts/build_installer.py
  • dist\SwingLab\SwingLab.exe
  • dist\installer\SwingLab-Setup-1.1.0.exe

Installs to %LOCALAPPDATA%\Programs\SwingLab. Recordings go to %LOCALAPPDATA%\SwingLab. GitHub Action Windows installer builds on v* tags or manual dispatch. See packaging/README.md.

Loose ends in this PR

  • setup_env.ps1 / .bat, run_debug.ps1, and move_project.ps1 no longer call deleted debug_recorder.py
  • Historical docs say those CLI scripts were removed
  • Archive copies only the active player’s + unclaimed swings
  • Inno script no longer sets empty LicenseFile / SetupIconFile
  • SwingDetector tests mock time.time instead of sleep
  • Dead TestTemplate* names removed from test runners

Stability / product bugs

  • Flask JSON errors now return 4xx/5xx (503 not initialized, 409 recording conflicts, 403 other-player delete, 404 missing camera/recording) instead of HTTP 200 with {error}
  • Historical clip export re-encodes the saved MP4 from disk when annotated frames are no longer in memory
  • Analysis tab shows Clip Cam1/Cam2 for saved swings
  • Mock soak no longer burns 0.4s of wall-clock sleep
  • Frontend jsonFetch treats a payload error field as failure even if a route still returns 200

Tests

python3 run_all_tests.py --unit passed. Frontend Vitest (35) and Playwright e2e (8) passed.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 16, 2026 01:20
SwingLab-Setup.exe installs an onedir build with the Vue UI, OpenCV,
and MediaPipe. First launch opens the camera wizard; user data and
recordings go to %LOCALAPPDATA%\SwingLab. Build with
python scripts/build_installer.py or the Windows installer workflow.

Co-authored-by: John Menke <jmjava@gmail.com>
Point Windows helpers at the setup wizard instead of deleted
debug_recorder.py. Archive copies only the active player's swings
(plus unclaimed). Inno no longer sets empty LicenseFile/icon keys.
SwingDetector tests mock time instead of sleeping.

Co-authored-by: John Menke <jmjava@gmail.com>
@cursor cursor Bot changed the title Land the frozen Windows installer on master Land the Windows installer and tie up leftovers Aug 16, 2026
@jmjava
jmjava marked this pull request as ready for review August 16, 2026 01:24
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

cursoragent and others added 2 commits August 16, 2026 01:31
JSON error payloads now use 4xx/5xx instead of HTTP 200. Saved-swing
clip export re-encodes the recording from disk when annotated frames
are no longer in memory. The mock soak no longer sleeps on the clock.

Co-authored-by: John Menke <jmjava@gmail.com>
The users API fixture has no CameraManager; a 200-with-error used to
hide that. Fail closed like the other uninitialized routes.

Co-authored-by: John Menke <jmjava@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants