Previous deploy used git stash -u which deleted untracked data/*.json
files (servers, synology, ha, pc). New script backs up and restores them.
Co-authored-by: Cursor <cursoragent@cursor.com>
aiohttp hung on KeenDNS from VPS while httpx works (keenetic-unified
pattern). Align add/import/bulk URL parsing with parse_keenetic_web_url.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resetting the session after auth dropped cookies and broke metrics
collection with "No data from router" despite successful login.
Co-authored-by: Cursor <cursoragent@cursor.com>
Probing used short timeouts on the session reused for RCI calls.
Recreate the session after auth and treat 503 as transient.
Co-authored-by: Cursor <cursoragent@cursor.com>
KeenDNS returns multiple A records including unreachable IPs; aiohttp
was timing out on the first bad address. Iterate all resolved IPs with
short connect timeouts, serialize polls with a lock, and fail faster.
Co-authored-by: Cursor <cursoragent@cursor.com>
Card-level onclick fired even when KeenDNS was clicked. Use delegated
handlers so the edit form toggles reliably and card clicks skip buttons.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run refresh-all in background so API stays responsive during 24-router
poll. Cap per-device poll at 75s, add 2s gap between routers, bump
KeenDNS connect/read timeouts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire keenetic monitor loop and router into main app. Add deduplicated
Telegram alerts for router offline, internet, CPU/RAM, and VPN down.
Update README with KeenDNS edit, import format, troubleshooting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add PATCH endpoint and inline card editor to update web_url and host,
with URL validation and automatic refresh after save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use web_url scheme and host:port for API base URL instead of
forcing https. Force IPv4 in aiohttp to avoid IPv6 hangs on
KeenDNS. Sync canonical 24-router list with Russian names.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add web_url/anydesk to router records, host fallback for Web button
on offline cards, cache-bust app.js, and scripts to sync import list.
Co-authored-by: Cursor <cursoragent@cursor.com>
New tabs:
- Synology NAS: CPU, RAM, temp, volumes, VMs, Docker containers
- Home Assistant: sensors, automations, persons, climate, battery, doors
New features:
- Personalized PC agent download with custom name
- Notification settings: per-category Telegram/Email/WhatsApp toggles
- Email via SMTP, WhatsApp via CallMeBot API
- Test notification buttons for each channel
- Unified notifier replaces direct Telegram calls in alerter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Validate Telegram WebApp initData using HMAC-SHA256
- Dual auth: cookie (web panel) OR X-Telegram-Init-Data header
- Mini App sends initData with every API request
- Retry button on auth failure instead of dead end
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Footer on dashboard, login, Telegram Mini App
- Author section in README
- Consistent styling across light/dark themes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- WebApp inline button uses https://IP.nip.io/telegram-app
- Bot menu button 'VPS Panel' set via setChatMenuButton API
- nginx reverse proxy with valid SSL cert on port 443
- Fallback to regular URL button if WebApp fails
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Switch xterm.js from cdnjs (404) to jsdelivr (working)
- Add xterm-addon-fit for auto-resize terminal
- Change default port from 8000 to 7272 everywhere
- Install script: --port flag for custom port selection
- sed-based port injection into systemd service at install time
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Sectioned card layout: СЕРВЕРЫ, ДЕЙСТВИЯ, УВЕДОМЛЕНИЯ, СИСТЕМА
- Expandable server cards with metrics detail + reboot/delete
- Mute/unmute alerts (2h, 8h) with API support
- Green/red pulsing status dots, colored badges
- Toast notifications, loading spinner
- Overview API endpoint for Mini App data
- Mute integration with alerter system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Light and dark theme toggle with localStorage persistence
- Russian and English language support (full i18n)
- Instructions & cheat sheet modal with install/SSH/API/commands
- Green pulsing dot for online, red for offline servers
- Color-coded metrics: green (ok), yellow (warn >70%), red (crit >90%)
- Top bar on server cards: green=online, red=offline
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- FastAPI backend with auth, server CRUD, metrics collection
- Web dashboard with dark theme, server cards, SSH terminal (xterm.js)
- Telegram bot with inline keyboards, server management, reboot
- Telegram Mini App for mobile monitoring
- Background monitoring via asyncssh (CPU, RAM, Disk, Network, Uptime)
- Alert system with configurable thresholds
- WebSocket SSH terminal in browser
- One-command install script
- Systemd service configuration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>