Commit Graph

4 Commits

Author SHA1 Message Date
alexei.dolgolyov ea812bb4d5 feat: check if port is busy before starting the server
Lint & Test / test (push) Successful in 1m16s
2026-03-29 14:21:35 +03:00
alexei.dolgolyov 9b4dbac088 feat: graceful shutdown with store persistence and restart overlay
Lint & Test / test (push) Failing after 29s
- Add /api/v1/system/shutdown endpoint that triggers clean uvicorn exit
- Persist all 15 stores to disk during shutdown via _save_all_stores()
- Add force parameter to BaseJsonStore._save() to bypass restore freeze
- Restart script now requests graceful shutdown via API (15s timeout),
  falls back to force-kill only if server doesn't exit in time
- Broadcast server_restarting event over WebSocket before shutdown
- Frontend shows "Server restarting..." overlay instantly on WS event,
  replacing the old dynamically-created overlay from settings.ts
- Add server_ref module to share uvicorn Server + TrayManager refs
- Add i18n keys for restart overlay (en/ru/zh)
2026-03-24 15:50:32 +03:00
alexei.dolgolyov b63944bb34 fix: skip browser open on tray restart, add WLED rename TODO
Lint & Test / test (push) Failing after 30s
Set WLED_RESTART=1 env var on tray restart so __main__.py skips
opening a new browser tab — the user already has one open.

Add important TODO item to eliminate WLED naming throughout the app
(package rename, i18n, build scripts, etc.).
2026-03-24 14:21:27 +03:00
alexei.dolgolyov 6a881f8fdd feat: add system tray and __main__ entry point
Add pystray-based system tray icon with Open UI / Restart / Quit
actions. Add __main__.py for `python -m wled_controller` support.
Update start-hidden.vbs with embedded Python fallback for both
installed and dev environments.
2026-03-24 13:58:19 +03:00