Commit Graph

1758 Commits

Author SHA1 Message Date
rcourtman c49176d700 Require TLS for non-loopback agent transport 2026-04-21 23:56:07 +01:00
rcourtman 3ec2c0779e Harden agent command and deploy trust boundaries 2026-04-21 23:50:34 +01:00
rcourtman 02e9107ac4 Harden cloud handoff membership authorization 2026-04-21 23:18:35 +01:00
rcourtman 22687e9301 Clear expired status work claim 2026-04-21 22:48:11 +01:00
rcourtman 62ec34ef02 Route hostname lookups through canonical equivalence 2026-04-21 22:47:23 +01:00
rcourtman 68c1e9564d Refine quick tour copy and guide labels 2026-04-21 22:35:58 +01:00
rcourtman 3c93694c5f Tighten provider-neutral host install wording 2026-04-21 22:34:51 +01:00
rcourtman 074b04eb76 Prove offline Proxmox node visibility in v6
Refs #1433
2026-04-21 22:23:53 +01:00
rcourtman f796efceac Fix QNAP host/docker monitored-system split
Refs #1421
2026-04-21 22:11:13 +01:00
rcourtman e1c852350e fix: rebuild unified-seed source mappings for dashboard trends 2026-04-21 18:30:49 +01:00
rcourtman 669908acd4 Normalize workloads and recovery page headers 2026-04-21 17:51:33 +01:00
rcourtman 4f0c8b3e42 Keep unified agent add-flow copy provider-neutral 2026-04-21 17:34:15 +01:00
rcourtman 1cad23fd4c Drive infrastructure catalog grouping from platform manifest 2026-04-21 17:24:22 +01:00
rcourtman 55df0041ec Neutralize infrastructure add catalog posture 2026-04-21 16:56:14 +01:00
rcourtman a170692683 Align AI discovery lifecycle with discovery settings
Refs #1425
2026-04-21 16:06:49 +01:00
rcourtman fd5c14b049 Close RC-era issue gaps blocking v6 GA
Refs #1430

Refs #1436

Refs #1435

Refs #1409

Refs #1429

Refs #1432
2026-04-21 14:46:23 +01:00
rcourtman ee2537987f Surface active PBS tasks in infrastructure views 2026-04-20 23:54:01 +01:00
rcourtman 92f4e2c0a9 Expose shared storage growth deltas on the storage page 2026-04-20 23:22:29 +01:00
rcourtman 4bd023fe1c infra: align agent-led add landing with Proxmox auto-detect 2026-04-20 22:48:34 +01:00
rcourtman d8d94c48e1 Expose local commercial funnel diagnostics 2026-04-20 22:27:34 +01:00
rcourtman c20766b7b8 Instrument self-hosted billing conversion stages 2026-04-20 21:46:59 +01:00
rcourtman 61430703b2 Reframe self-hosted paid value around operator outcomes 2026-04-20 17:30:52 +01:00
rcourtman 0c47b2ada1 Clear v6 prerelease-to-GA promotion gate 2026-04-20 16:33:03 +01:00
rcourtman c4a4d175ce Fix v6 dry run backend contract regressions 2026-04-20 14:57:49 +01:00
rcourtman 6db9aeadcf Prepare the v6 stable promotion candidate 2026-04-20 14:09:17 +01:00
rcourtman b8b0125418 Clear the self-hosted commercial coherence gate 2026-04-20 12:11:53 +01:00
rcourtman 1eccdde2b4 Document the v6 GA promotion packet 2026-04-20 10:48:37 +01:00
rcourtman 67a4b89907 Clarify v6 self-hosted plans and activation copy 2026-04-20 10:35:26 +01:00
rcourtman e8e5da703d Tighten v6 GA commercial readiness gate 2026-04-20 10:05:27 +01:00
rcourtman da23b5fb9e Sync Pulse Account specs with governed lane 2026-04-20 09:42:22 +01:00
rcourtman f62b6f5e6d Promote Pulse Account to a governed lane 2026-04-20 09:37:15 +01:00
rcourtman cdeb257754 Finish Pulse Account workspaces shell 2026-04-20 09:25:42 +01:00
rcourtman cba8cd2d49 refactor(connections): drop detail page, render actions inline on ledger rows
The detail panel never earned its keep — it showed the same status, host,
and last-seen already on the row, and gated Edit / Pause / Remove behind
a navigation hop. Collapse it into row-level actions so the ledger is the
single surface for managing a monitored system:

- New useConnectionRowActions hook: per-id pending / error / confirming
  state so pause + two-click remove coexist across rows without
  component-per-row signal proliferation. Confirm window bumped to 6s.
- ConnectionsTable: inline Edit / Pause / Remove cluster per row, red
  alert row for action errors, expansion row with agent uninstall
  commands (Linux + Windows, copy-to-clipboard) during remove-confirm.
- InfrastructureWorkspace: 3-mode shape (ledger / add / edit), no
  detail selection state, pulls uninstall commands from the operations
  context and wires clipboard + notifications.
- Deleted ConnectionDetailPanel + its test; subsystem contracts
  (agent-lifecycle, frontend-primitives, api-contracts, registry)
  updated to point at useConnectionRowActions and ConnectionsTable
  as the canonical drill-in surface.

All 30 Settings tests pass; type-check clean.
2026-04-20 08:38:13 +01:00
rcourtman e6352afbef refactor(connections): drop drawer, render detail inline in workspace
Row click on the ConnectionsTable was still popping a right-side Dialog
drawer. That re-wrapped the per-type panels rather than replacing them —
"consolidation means shared fabric, not shared container."

Swap ConnectionDetailDrawer for ConnectionDetailPanel: same props, same
pause/remove handlers, but rendered as an inline bordered card instead
of a Dialog. The workspace Switch/Match gains a 'detail' mode that
shows the panel with a "Back to systems" header. Removing a connection
exits detail mode via onRemoved; editing routes through the existing
handleEditConnection.

Subsystem contracts updated to match: agent-lifecycle, frontend-primitives,
and api-contracts now name ConnectionDetailPanel.tsx (with a note that
it must not be re-wrapped as a floating Dialog); registry owned_files
and platform-connections-workspace-lifecycle-proof match_files renamed
to match the new filename.
2026-04-19 22:33:36 +01:00
rcourtman 3dbe638f70 Shrink welcome tour into compact coachmark
Refs #1429
2026-04-19 22:21:50 +01:00
rcourtman a34bfcc037 Refocus welcome tour on v5 wayfinding
Refs #1429
2026-04-19 22:05:41 +01:00
rcourtman a7ba4206fe Restore flat welcome tour styling
Refs #1429
2026-04-19 21:51:10 +01:00
rcourtman 7b2c37de94 Refine welcome tour step map
Refs #1429
2026-04-19 21:46:29 +01:00
rcourtman 5c5425aea8 Polish welcome tour layout
Refs #1429
2026-04-19 21:41:14 +01:00
rcourtman 3ff7c2f2e3 Replace v6 banner with guided welcome tour
Refs #1429
2026-04-19 21:26:54 +01:00
rcourtman 9a8b6fb746 Add dashboard navigation migration notice
Refs #1429
2026-04-19 20:35:18 +01:00
rcourtman 89fdf2108c Restore self-hosted plan compare prompt
Refs #1429
2026-04-19 20:22:27 +01:00
rcourtman f4feccc151 Use shared self-hosted plan metadata
Refs #1409
2026-04-19 19:59:03 +01:00
rcourtman 238545b207 Normalize infrastructure onboarding route contract 2026-04-19 19:37:19 +01:00
rcourtman f8d0839806 Reorder dashboard summary before problem resources
Refs #1429
2026-04-19 19:37:19 +01:00
rcourtman 29d96aec33 Reduce metrics store transaction churn
Refs #1124
2026-04-19 17:11:14 +01:00
rcourtman d75b10df57 phase 9 — retire stop-monitoring & legacy per-type shells
Delete the stop-monitoring dialog plus the retired per-type settings
shells now that the unified ConnectionEditor replaces them: remove
PlatformConnectionsWorkspace / ProxmoxSettingsPanel /
ProxmoxDirectWorkspace / NodeModal et al and the accompanying tests.
Strip the lingering reporting-state hook from
useInfrastructureOperationsState and the guardrail test reinforces the
removal. Reconcile registry.json, frontend-primitives.md,
api-contracts.md, agent-lifecycle.md, status.json, and the
release-control guard/test fixtures so governance audits stay clean.
2026-04-19 16:55:05 +01:00
rcourtman 5296bbf4c4 Complete Pulse Cloud runtime handoff 2026-04-19 15:42:08 +01:00
rcourtman 406b966b86 v6(settings): phase 8 — per-surface Monitor* scope for TrueNAS and VMware
Adds positive MonitorDatasets/Pools/Replication booleans to TrueNASInstance
and MonitorVMs/Hosts/Datastores to VMwareVCenterInstance, matching the
PVE/PBS/PMG scope pattern. NewInstance defaults all surfaces to true;
ApplyDefaults migrates legacy all-false records to all-true so existing
truenas.json / vmware.json on disk continue monitoring after upgrade.

The unified connections aggregator now reads those booleans into the
Scope map and flips SupportsScope to true for both types, so the Scope
UI in the ConnectionEditor is a straight wire-through to the native
config fields — no new storage or adapter layer. Per-type API clients,
form state, and the TrueNAS and VMware credential slots render the same
three-checkbox "Collection scope" panel used by PVE/PBS/PMG, replacing
the old per-type Stop-this-surface dialog end-to-end from the editor's
side.

Contracts updated: agent-lifecycle, api-contracts, storage-recovery.
Tests: truenas.test.ts and vmware.test.ts round-trip the new monitor*
flags through list + update payloads; config tests cover the legacy
all-false ApplyDefaults migration; aggregator test asserts the scope map
and SupportsScope: true for both types.

Provider Refresh paths still fetch everything in one trip; honoring
Monitor* inside VMware and TrueNAS pollers is deferred to a follow-up.
2026-04-19 15:02:18 +01:00
rcourtman bc2cf8d400 v6(settings): phase 7 — ConnectionsTable sources from the unified aggregator
Switches the configured-connections ledger in the infrastructure workspace
from the legacy `useInfrastructureReportingState`-derived rows to
`GET /api/connections`, so the table now reflects aggregator-derived state
(active/paused/unauthorized/unreachable/stale/pending) and per-connection
scope directly from the per-type config stores plus scheduler health.

New frontend surfaces:

- `useConnectionsLedger.ts` polls the unified aggregator every 15s and
  maps each `Connection` into an `InfrastructureSystemRow` with state
  badges, collection label, active-scope coverage labels, and a
  `connection` manage action.
- `ConnectionDetailDrawer.tsx` renders the aggregator fields (type,
  address, state, stateReason, enabled, surfaces with active scope,
  last seen, last error, source) when a unified row is clicked,
  replacing `InfrastructureActiveRowDetails` for configured connections.

`InfrastructureWorkspace` now composes its row list from the ledger plus
the legacy monitoring-stopped rows (still driven by
`useInfrastructureReportingState`) and no longer mounts the legacy
active-row drawer. Ignored-inventory drill-in continues to use
`InfrastructureIgnoredRowDetails` pending the phase 9 cleanup.

`SystemManageAction` gains a `connection` variant so the workspace can
differentiate unified-row clicks from monitoring-stopped rows without
conflating them through the legacy `rowKey` path.

Contracts updated: agent-lifecycle, frontend-primitives.
Tests: `InfrastructureWorkspace.test.tsx` extended with a
`connectionFixture`, asserts unified rows render with the new state
badges, and the View-details click opens the new connection-detail
drawer instead of calling `setExpandedRowKey`.
2026-04-19 14:03:07 +01:00