Fold the Windows tray/daemon into one self-contained Clawdmeter.exe with a settings UI, and wire the host side of the watch features: - config.py: single %LOCALAPPDATA%\Clawdmeter\config.json (ha/buttons/settings), atomic writes, auto-migration from the old ha_config.json. - server.py: local FastAPI (127.0.0.1:8723) — GET/PUT /api/config (token masked), POST /api/ha/test, GET /api/ha/entities, GET /api/status. - web/index.html: brand-styled settings panel (Status/HA/Buttons/Settings tabs). - panel.py: pywebview/WebView2 window, launched as its own process (pywebview and pystray both want the main thread); tray "Settings" opens it via --panel. - daemon: HA command dispatch (toggle/bri/ct), dynamic button labels + index→ action mapping, watch-battery low warning toast, and the dimmer "dim" snapshot (dimreq → light_snapshot of the first entity) so the watch dial seeds from HA. - clawdmeter.spec / requirements: bundle fastapi+uvicorn+pywebview+webview backend. - build-exe.ps1: ASCII-only (Windows PowerShell 5.1 mangles em-dashes under cp1251). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
19 lines
760 B
Plaintext
19 lines
760 B
Plaintext
# Windows-only dependency manifest for claude_usage_daemon_windows.py
|
|
# The macOS/Linux daemons manage their own dependencies separately.
|
|
bleak
|
|
httpx
|
|
pystray
|
|
Pillow
|
|
# Now Playing (Phase 5): read the Windows "now playing" media session (SMTC).
|
|
# bleak already pulls winrt-runtime + the Bluetooth projections; these add the
|
|
# media-control projection. pip resolves them to the same winrt-runtime as bleak.
|
|
winrt-Windows.Media
|
|
winrt-Windows.Media.Control
|
|
# Phase 7 control panel: a local FastAPI server (bound to 127.0.0.1) serves the
|
|
# brand UI, and pywebview hosts it in a native Edge WebView2 window. pywebview
|
|
# pulls pythonnet (clr) on Windows for the EdgeChromium backend. httpx (above)
|
|
# is reused for the HA test/entities calls.
|
|
fastapi
|
|
uvicorn
|
|
pywebview
|