Package the tray+daemon as a single PyInstaller onefile exe so it runs on a fresh Windows 11 box with no Python and no pip install. Verified on hardware: the frozen exe connects over BLE, reads the Windows media session, and pushes now-playing (incl. Cyrillic) at the 3s / 60s cadence. - clawdmeter.spec: onefile, windowed (no console; logs to daemon.log). collect_all for winrt + bleak is the key bit — bleak loads its WinRT backend dynamically and the winrt.windows.* projections are split distributions that PyInstaller's static analysis misses, so BLE and the media session would otherwise fail at runtime. upx off (lowers AV false-positive rate). - build-exe.ps1: one-command build (venv + deps + pyinstaller + spec). - tray_windows.py: resolve the brand-logo asset from sys._MEIPASS when frozen. - autostart_windows.py: when frozen, the HKCU\Run "Start at login" value points at the exe itself (sys.executable), not pythonw + script. - .gitignore: ignore /build, /dist, /.venv — the exe ships via a Gitea release. - README-windows.md: document the standalone-exe path (download / run / build). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
30 lines
465 B
Plaintext
30 lines
465 B
Plaintext
# PlatformIO build artifacts
|
|
firmware/.pio/
|
|
firmware/.vscode/
|
|
|
|
# OS
|
|
.DS_Store
|
|
|
|
# Claude Code
|
|
.claude/
|
|
|
|
# Node tooling deps (npm install --no-save)
|
|
tools/node_modules/
|
|
tools/package-lock.json
|
|
|
|
# Mac daemon venv
|
|
daemon/.venv/
|
|
|
|
# Python bytecode cache
|
|
__pycache__/
|
|
*.pyc
|
|
|
|
# Windows daemon venv
|
|
/.venv/
|
|
|
|
# PyInstaller build artifacts — the standalone exe ships via a Gitea release,
|
|
# not git (build it with build-exe.ps1 / clawdmeter.spec).
|
|
/build/
|
|
/dist/
|
|
*_dbg.spec
|