3 Commits

Author SHA1 Message Date
Anand dbe6f0df1e Fix DELETE requests, console errors, and LXC network null crash; add SSH access
Root cause of the recurring "Request failed" / 502 errors on delete and
other actions: the Proxmox client was sending a request body on DELETE
calls, which Proxmox's API rejects outright. Params now go on the query
string instead, fixing delete for guests and replication jobs alike.

Other fixes:
- Guest console/shell errors now show Proxmox's actual message instead of
  a generic failure, so a permission or lock issue is visible instead of
  guessed at.
- Opening a console/shell popup no longer wastes the small window Proxmox
  gives to claim a session ticket on the popup's own load time - the
  ticket is requested only once the popup is ready to use it.
- An LXC container with an interface that has no IP address was crashing
  the guest detail view ("Cannot read properties of null"). The backend
  was sending a null array instead of an empty one; fixed at the source
  plus a few related spots that had the same latent risk.
- The template upload dialog had broken spacing between its fields.
- Settings page: the "About" section could never show as active in the
  sidebar nav because of how the scroll position was measured.

New:
- Direct SSH shell access from Inventory and node pages, independent of
  Proxmox's own console/shell (useful when that's unreliable or
  unavailable). Connections can now store SSH credentials (password or
  private key) so this connects with one click instead of typing them in
  each time.
- Network interfaces in a guest's Hardware tab are now editable as
  separate fields (bridge, VLAN, IP, gateway, firewall, etc.) instead of
  one raw text value, matching how Proxmox's own UI presents them. LXC
  containers can also have their DNS nameserver/search domain set from
  the same tab, and other hardware config keys can now be edited through
  the same endpoint.
2026-09-14 12:38:28 +05:30
Anand d9b2519b75 Fleet audit fixes: PBS page, shared SSE, safer ops, deep links + comment cleanup
- New PBS Backups page (/pbs): datastore usage, group browser, per-group
  prune, GC with live status, sync/verify jobs with admin-gated run
- Shared single-connection SSE store (lib/sse.ts) feeding NotificationBell
  and the telemetry pill; global offline banner with reconnect invalidation
- Correctness: CIFS storage credentials sent in JSON body; per-row alert
  silencing + unsilence endpoint; graceful stop-and-delete for running
  guests; accent/shadow token fixes for all look presets
- Safer operations: confirms for SDN apply and host upgrade-all; Refresh
  control on every page; 30s polling added to previously-static pages
- Wayfinding: guests deep-linkable via /inventory?focusGuest, scoped
  inventory views, topology guest click-through, Overview links
- Forms/consistency: node storage/bridge pick-lists in CreateGuestDialog,
  backup schedule validation, BulkOperationsPage on shared DataTable,
  progressive pagination on cluster access lists, shared Timestamp and
  chartToneFor helpers, editable alert rules and webhooks
- Security/tests: CSRF, authz-matrix, redaction and PBS test coverage;
  webhook outbox + connection TLS fingerprint migrations (00032/00033,
  sqlite + postgres)
- Comment audit: removed stale, duplicated and orphaned comments; corrected
  inaccurate doc comments (UpdateGuestConfig, InvalidateAll, breakpoint
  references); no behavior changes
2026-09-13 23:29:33 +05:30
Anand 4dfeb9848e Wave 2: real-time events/webhooks, cross-remote tags/search/bulk-ops, cert & session monitoring
- internal/events: in-process pub/sub bus; GET /api/v1/events SSE stream
- internal/notify/webhooks.go: signed outgoing webhook dispatcher w/ retry + delivery log
- internal/api/tags.go, search.go, bulk.go: cross-remote tag aggregation, global search, fleet-wide bulk guest actions
- internal/auth/sessions.go: session listing/revocation (self-service + admin), extends the existing stateful session table
- internal/poller/certificates.go: cert-expiry + connection-staleness alerting via the existing alert_rules pipeline
- web: useEventStream hook, GlobalSearch + BulkOperationsPage (not yet wired into nav), SessionsCard on ProfilePage
2026-09-10 11:49:11 +05:30