v2 host: portable desktop app (tray + FastAPI + WebView2 panel), unified config, HA control
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>
This commit is contained in:
@@ -9,3 +9,10 @@ Pillow
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user