From 331de4bc9e37fbb3e31e7ec92cdc0b9477f9e83c Mon Sep 17 00:00:00 2001 From: Kareem Horstink Date: Fri, 3 Jul 2026 08:21:46 +0000 Subject: [PATCH] Add settings page, PIN manager, and auto-config - New settings page at /settings (localhost-only) accessible via tray icon - PIN manager with 6-digit codes, 5-min TTL, single-use - API token uses secrets.token_urlsafe(32) for 256-bit entropy - Config auto-creates config.yaml on first run with detected local IP - Default PIN and token generated randomly on first startup - Added pin_ttl setting (default 300s) - Updated build_exe.py for onefile exe with settings assets bundled - Added start.bat and start.sh for easy development startup --- client/app.js | 3 +- client/index.html | 2 +- server/.env.example | 2 +- server/build_exe.py | 7 +- server/config.py | 78 ++++++++++++++++++++-- server/main.py | 74 +++++++++++++++++++-- server/pin_manager.py | 141 ++++++++++++++++++++++++++++++++++++++++ server/settings.css | 117 +++++++++++++++++++++++++++++++++ server/settings.html | 142 +++++++++++++++++++++++++++++++++++++++++ server/start.bat | 33 ++++++++++ server/start.sh | 34 ++++++++++ server/tray_wrapper.py | 38 ++++++++++- 12 files changed, 652 insertions(+), 19 deletions(-) create mode 100644 server/pin_manager.py create mode 100644 server/settings.css create mode 100644 server/settings.html create mode 100644 server/start.bat create mode 100644 server/start.sh diff --git a/client/app.js b/client/app.js index a3918e6..9fe3672 100644 --- a/client/app.js +++ b/client/app.js @@ -515,8 +515,7 @@ return; } - SETTINGS_STATUS.textContent = - strings.settings_saved || "Settings saved"; + SETTINGS_STATUS.textContent = strings.settings_saved || "Settings saved"; currentApiToken = token; } catch (err) { SETTINGS_STATUS.textContent = diff --git a/client/index.html b/client/index.html index f8a717f..3b23cff 100644 --- a/client/index.html +++ b/client/index.html @@ -121,7 +121,7 @@

-