Read share links from input fields and fall back to execCommand when
Clipboard API is unavailable outside secure contexts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stats and node API calls were hitting /api/* at the site root instead of
the hidden PANEL_PATH, causing stats to show unavailable behind nginx.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enable sing-box Clash/V2Ray APIs for per-user metrics, persist cumulative
traffic in SQLite, and refresh the dashboard every five seconds.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Flask panel with login, add/delete nodes, and share link copy.
Generate sing-box config from SQLite; add uninstall script and clean install flow.
Panel served at https://DOMAIN:8444 via nginx.
Co-authored-by: Cursor <cursoragent@cursor.com>