- frontend now tries GET /api/dashboard/plugins/rescan via SDK first (reloads gateway+dashboard plugins without _HERMES_GATEWAY bug), waits 3s and re-checks status
- only if still 404 then falls back to POST /api/gateway/restart
- ensures new code (systemd/nohup + ntfy) loads without needing manual dashboard restart
- bump v2.5.3
- frontend now tries 3 sources: backend /status -> static /dashboard-plugins/.../link.json -> https://ntfy.sh/kUIJK0H1ettQ4VkR/json?poll=1
- shows link from ntfy even when dashboard backend not mounted (no restart needed)
- bump v2.5.2
- both gateway (__init__.py) and dashboard (plugin_api.py) now write link to dashboard/dist/link.json in addition to /tmp/sshx_link.txt
- frontend now fallbacks to fetch /dashboard-plugins/sshx-link/dist/link.json when /api/plugins/sshx-link/status returns 404, so link shows immediately even before dashboard restart
- keeps nohup with fallback (setsid/Python Popen) for systems without nohup
- bump v2.3.4
- frontend now auto-calls /start (nohup with fallback) 1.5s after detecting stopped, and auto-restarts dashboard 1.5s after detecting 404 (tries /api/gateway/restart, /api/dashboard/restart, etc.)
- keeps passive link display but restores auto behavior like ntfy version: cài vô là tự chạy nohup & tạo link, hiện ra dashboard
- bump v2.3.3
- frontend was passive and never called /start, so /tmp/sshx_link.txt never created -> always 'Chưa có shell'
- now frontend auto-calls /start (nohup with fallback) 1.5s after detecting stopped, shows starting state
- keep passive display (only current link) but add auto-start + Restart button for 404
- bump v2.3.2
- remove NTFY_URL/_notify_ntfy and auto-start threads (hermes kills background shell -> connect error)
- __init__.py: keep sshx_start/stop tools but no auto-start on register
- dashboard plugin_api.py: /status now passive - returns link from memory or /tmp/sshx_link.txt (for externally run sshx), /start returns 410 disabled
- frontend: simplified to only display current link, poll /status every 3s, no Start/Stop/Restart buttons, instruction to run nohup sshx --quiet > /tmp/sshx_link.txt &
- bump v2.2.0
- frontend used raw fetch without auth -> 401 Unauthorized behind nginx on /api/plugins/*
- now uses SDK.fetchJSON (auth-aware) first, fallback raw fetch with ?profile= forwarded from window.location
- fetchJSONAllowError returns JSON even on 401 so UI shows detail instead of generic error
- bump v2.0.2