Server fixes:
- database.js: auto-create data/ directory on startup — was crashing on
fresh clone because the gitignored directory didn't exist
- better-sqlite3 upgraded to latest (13.x) for Node 26 compatibility
Network discovery:
- discoverNetwork() accepts optional subnet param; scans that range instead
of auto-detecting when provided
- New GET /api/network-subnets endpoint returns detected local interfaces
so UI can offer quick-select buttons
- Discovery modal: subnet text input + Scan button + auto-detect quick-select;
local subnet buttons populate once the modal is open
- server/index.js: pass subnet from request body to discoverNetwork()
Infra:
- React client runs on PORT=3456 in dev to avoid port conflicts
- .claude/launch.json added for one-command preview via Express (serves
the pre-built client, no port conflict with the preview tool)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bugs fixed:
- Status page: autoRefresh checkbox now actually pauses the interval
- Dashboard edit modal: hide URL field for heartbeat resources (was always shown as required)
- Dashboard: apply items_per_page, default_sort, and refresh_interval from settings on mount
- Dashboard: call loadResources() immediately on mount (was waiting 15s for fallback)
- Observability: listen for WS 'metrics' messages so tab updates live, not just on poll
UX improvements:
- Dashboard: replaced window.confirm() with inline Confirm/Cancel buttons for single and bulk delete
- Dashboard: skeleton rows shown while initial data loads (no more flash of empty state)
- Notifications: WebSocket moved from window global to useRef; exponential backoff on reconnect
- Notifications: replaced window.confirm() with inline Confirm/Cancel for Clear All
- ResourceDetail: initial API calls run in parallel via Promise.all
New features:
- ntfy.sh push notification channel: enable in Settings, enter topic, get mobile push alerts
- Network Discovery: Actions → Discover Network scans LAN for reachable hosts, probes HTTP ports, and lets you add any found host to monitoring in one click
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>