The installer's InstallAllUsers=1 needs admin (runner service isn't elevated)
so Python landed in the per-user LOCALAPPDATA dir, not C:\Program Files; the
hardcoded PATH prepend missed it -> 'python not recognized'. Switch to a
per-user install and locate python.exe across the known dirs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
First v0.1.0 run: Windows + Linux + arm64 failed (no Python on those runners;
the docker default image also lacks Python). macOS succeeded.
- windows: install Python 3.12 via the official installer in-job (idempotent).
- linux-amd64 / linux-arm64: run in nikolaik/python-nodejs:python3.12-nodejs20
(has python+pip AND node for actions/checkout; multi-arch covers the Pi).
- macOS job unchanged (it worked).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
.gitea/workflows/release.yml builds the PySide6 GUI with PyInstaller on each
self-hosted runner and, on a v* tag, publishes a Gitea Release with every
platform binary attached:
- windows-latest -> OBDash-windows.exe (onefile, --windowed)
- self-hosted-mac -> OBDash-macos.zip (.app bundle, ditto-zipped)
- docker (linux) -> OBDash-linux-x86_64 (onefile + patchelf/GL libs)
- arm64 (Pi) -> OBDash-linux-aarch64
Uses softprops/action-gh-release with the auto GITEA_TOKEN; manual dispatch
build-only (no release).
profiles/ is bundled via --add-data; obdcore.profile.profiles_dir() now
resolves sys._MEIPASS when frozen so the binary finds its vehicle profiles.
Validated locally on Linux: PyInstaller onefile builds (88MB), launches
offscreen, and loads bundled profiles (6 found). Build artifacts gitignored.
Added .claude/gitea-ship.json.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs