Commit graph

1686 commits

Author SHA1 Message Date
rcourtman
847d09d17b Unify settings infrastructure ledger 2026-04-18 14:54:53 +01:00
rcourtman
b666d131b0 Migrate Docker integrations to maintained Moby modules 2026-04-18 11:40:38 +01:00
rcourtman
35429774b4 Probe /api/health in hot-dev backend monitor
The supervisor's backend health monitor in scripts/hot-dev.sh only
checked whether a `./pulse` process existed via pgrep. If the Go binary
hung, panicked into recovery without exiting, or failed to bind :7655
while the process stayed alive, the monitor saw a healthy process count
and never restarted, leaving the dev frontend talking to a dead listener.
Hit that twice in one session.

Add an HTTP probe of /api/health on the dev port. After two consecutive
5s polls where the process exists but /api/health is unreachable, kill
the process and restart the same way the dead/duplicate branches do.
Cut the poll interval from 10s to 5s so the worst-case unresponsive
window is ~10s instead of ~30s. Bring deployment-installability into
line by naming alive-but-unresponsive recovery as part of the dev-runtime
orchestration boundary, and cover the new branch with static-source
assertions in scripts/tests/test-hot-dev-bg.sh.
2026-04-18 10:56:33 +01:00
rcourtman
e6b0d47bd6 Gate Docker mutations on authz-plugin posture 2026-04-18 10:45:25 +01:00
rcourtman
8d0aec6e4d Add back-to-inventory header on infrastructure subviews
The connections-table flip in 00c6dc2dd removed the workspace's top-of-
page subtab strip but left the install panel and platforms workspace
rendering bare with no path back to the inventory table. Operators who
clicked Add a system, picked a platform, and landed on
/settings/infrastructure/install or /settings/infrastructure/platforms/*
had to leave Settings entirely and return to the tab to get back to the
table.

Render a persistent breadcrumb header above every non-inventory view
inside InfrastructureWorkspace: a "← Connections and Inventory" button
that navigates back to the bare /settings/infrastructure route, plus a
heading naming the current subview. Inventory itself is unchanged.

Bring agent-lifecycle rule 7 into line by requiring this back-to-
inventory affordance on every detail route under /settings/infrastructure
so deeper surfaces are never reachable without a visible return path.
Cover the new header on install and platforms subviews — and its absence
on the inventory landing — in InfrastructureWorkspace.test.tsx.
2026-04-18 10:43:38 +01:00
rcourtman
2dc4e43033 Wire Connections & Inventory nav to the unified table
settingsTabPath('infrastructure-operations') and the initial-tab resolver
still returned /settings/infrastructure/install from the pre-flip
workspace, so clicking the Settings nav dropped users on the install
detail page instead of the unified Connections table shipped in
00c6dc2dd. Point the tab path and canonical resolver at the bare
/settings/infrastructure, extend deriveTabFromPath to recognise that
prefix as the infrastructure-operations tab, and bring
frontend-primitives rule 13 into line with the already-flipped
agent-lifecycle rule 7 so both contracts name the bare
/settings/infrastructure as the canonical landing. Update the three
guardrail suites (settingsRouting, settingsNavigation.integration,
settingsArchitecture) that encode the tab->path map so they reflect the
new landing.
2026-04-18 10:27:04 +01:00
rcourtman
f0b37dbfe1 Document remediation execute approval contract 2026-04-18 09:57:02 +01:00
rcourtman
00c6dc2dd4 Collapse infrastructure workspace onto one connections table
Replace the three-subtab install/connect/inventory narrative with a
single unified connections view at /settings/infrastructure. The base
route now renders one alpha-sorted table whose rows cover every
monitored system — Proxmox VE, PBS, PMG, TrueNAS, VMware, and agent
hosts — under the same name/kind/method/status/last-reported shape.
Adding a new system goes through a single "Add a system" picker whose
tiles route operators straight into the right flow:
/settings/infrastructure/install for the agent choice and
/settings/infrastructure/platforms/<kind> for Proxmox, TrueNAS, and
VMware. The install, platforms, and operations routes remain reachable
as detail surfaces, and read-only sessions continue to redirect the
install view back to the inventory base and suppress the add-system
entry point.

Update the agent-lifecycle subsystem contract to reflect that the
workspace shell no longer mandates a "bare routes default to install"
first-host narrative or a three-subtab layout. Refresh the guardrail
and integration tests that pinned the old tab shape and the legacy
operations landing route.
2026-04-18 00:00:34 +01:00
rcourtman
280b3dd5f7 Distribute infrastructure full-width columns 2026-04-17 23:39:19 +01:00
rcourtman
446a70ee69 Trim infrastructure workspace onboarding papercuts
Rename the third subtab to "Inventory" and hide the first-system
orientation card once any platform connection or agent resource exists.
In the installer, drop the two cross-pointer callouts, replace the
locked-state placeholder with a disabled command preview, collapse the
uninstall block into a details disclosure, and keep the Platform
connections CTA as an inline link next to the target-profile note.
Remove the dead CalloutCard branch from ProxmoxSettingsPanel and update
the architecture guardrails accordingly. Pin the "Inventory" label and
the orientation-card gating into the agent-lifecycle contract so the
workspace-shell rule stays aligned with the surfaced narrative.
2026-04-17 23:37:15 +01:00
rcourtman
00da144dd8 Remove v6 RC banner from app shell 2026-04-17 20:06:57 +01:00
rcourtman
4e4fcb5dbe Move operations tools into settings support 2026-04-17 20:03:54 +01:00
rcourtman
865fa45ff2 Resolve patrol-product-language-ai-boundary decision
Audit of customer-facing Patrol surfaces against the patrol-intelligence
contract (obligation #5) confirms the migration boundary:

- Customer chrome (page titles, nav, route labels, summary copy, actions,
  empty states) leads with Patrol/Pulse Patrol/Pulse Assistant
- Internal identifiers (file names, stores, types, transport fields,
  log tags) stay under the shared AI-runtime carve-out
- `/settings/system-ai` is the provider/configuration carve-out where
  AI terminology is reserved; its chrome is already product-first
  ("Assistant & Patrol")
- The AgentProfilesPanel "Ideas" tooltip was the last customer-facing
  surface outside those carve-outs and was neutralized in the prior
  commit

With the boundary documented, the only release-ready blocker is RA8
(rc-to-ga-promotion-readiness), which is held intentionally for the
governed RC-to-GA rehearsal.
2026-04-17 16:39:49 +01:00
rcourtman
85191a9051 Remove blanket Community-visible upgrade marketing surfaces
Cut three surfaces that nagged Community users without explicit feature
engagement: the Dashboard RelayOnboardingCard paywall, the app-wide
ActiveUseTrialNudge (already dead code with no render sites), and the
SetupCompletionPanel "Monitor from Anywhere" Relay trial block.

Feature-gated discovery that fires only when a user clicks a locked
feature (alert investigate, history ranges, Patrol AI modes, Settings
panels) is intentionally left alone — those are user-initiated, not
blanket funnels.

Governance cascade: cloud-paid.md extends the Settings no-funnel rule
to Dashboard and setup completion; registry.json, status.json readiness
assertions RA5/RA18, frontend-primitives/storage-recovery/
performance-and-scalability contracts, the high-risk verification
matrix, the relay registration proof script, the subsystem lookup
tests, and the obsolete integration spec are all scrubbed of
references to the removed files. Blocked-record regenerated against
current VERSION=6.0.0-rc.2 so the promotion-policy test no longer
diffs on a stale rc.1 artifact.
2026-04-17 14:49:28 +01:00
rcourtman
d35762b029 Remove Community-user upgrade CTAs from Settings plan page
Settings -> Plan was funneling Community users through marketing:
the monitored-system upgrade arrival banner (which triggered
license-server portal handoffs that emsofo hit as "Pulse Account
unavailable"), the trial-start CTA, the inactive-Pro upsell, and
the capacity-section Upgrade button all rendered unsolicited for
users without paid features.

Plan page now shows factual license state only for Community
users. Trial starting is still reachable from other entry points
(dashboard onboarding, patrol). Contract updated to forbid
regression. Dashboard-level nags remain; inventory pending.
2026-04-17 14:18:06 +01:00
rcourtman
80d9588d49 Remove unimplemented white-label claims and fix TOS product description
White-label branding was advertised as a Cloud Enterprise feature in
docs/CLOUD.md and docs/PULSE_PRO.md while the underlying capability is
still marked "not implemented" in features.go. Pulled from the customer-
facing matrix and prose so we are not selling a vapor feature.

TERMS.md described Pulse Pro as "infrastructure monitoring and AI-powered
automation" — narrowed to "infrastructure monitoring tool with AI-assisted
operations" so the legal document matches the product's actual posture.

Also trimmed the Pro row subtitle in the self-hosted pricing table to
drop "automation" since the AI autonomy surface is framed as assistance
with approval, not automated operations.
2026-04-17 10:50:00 +01:00
rcourtman
6ec64c55ed Fix stale v6-rc-cut active-target reference in control-plane doc
The `Current State` section of `docs/release-control/internal/CONTROL_PLANE.md`
still described `v6-rc-cut` as the active engineering target and listed
`v6-rc-stabilization` as planned. The active target has been
`v6-rc-stabilization` since the first governed RC shipped, and
`documentation_currentness_test` now fails on that drift. Update items 2, 4,
and 5 to match the current governed state.
2026-04-16 22:57:37 +01:00
rcourtman
b19991f4ae Fix published release body rendering 2026-04-16 22:20:17 +01:00
rcourtman
6fcdcf8b8e Add pre-release Helm chart smoke gate 2026-04-16 21:48:35 +01:00
rcourtman
f2746960d6 Relax mounted storage-root hardening semantics 2026-04-16 21:37:11 +01:00
rcourtman
9855973e5b Fix non-root storage hardening for Helm startup 2026-04-16 21:26:02 +01:00
rcourtman
d1a807e9c5 Fix Helm release-line branch fidelity and smoke diagnostics 2026-04-16 21:05:11 +01:00
rcourtman
447280a0ce Fix release-line demo workflow dispatch and verification 2026-04-16 20:54:01 +01:00
rcourtman
2868b44cf9 chore(release): bump version to 6.0.0-rc.2 2026-04-16 16:22:27 +01:00
rcourtman
596bcfb5e8 Make release candidate banner rc-version agnostic 2026-04-16 16:15:31 +01:00
rcourtman
7c1c5d396a Own mock runtime fixtures under monitoring 2026-04-16 16:00:23 +01:00
rcourtman
16d86ac094 Own VERSION under deployment-installability 2026-04-16 15:31:42 +01:00
rcourtman
d1600d5ef1 Own prerelease feedback intake under deployment-installability 2026-04-16 15:18:46 +01:00
rcourtman
92d1b22fb1 Own upgrade guide under deployment-installability 2026-04-16 15:06:54 +01:00
rcourtman
954a7c06c7 Tighten rc release packet runbook 2026-04-16 14:57:07 +01:00
rcourtman
78c5107b47 Own release packet docs under deployment-installability 2026-04-16 14:52:30 +01:00
rcourtman
f29104d693 Draft rc2 changelog packet 2026-04-16 14:45:14 +01:00
rcourtman
02194a237e Draft rc2 release notes packet 2026-04-16 12:22:03 +01:00
rcourtman
76bbf16105 Lock self-hosted paid extras packaging 2026-04-16 12:15:06 +01:00
rcourtman
59d320d1d4 Fix Proxmox settings route selection
Refs #1423
2026-04-16 12:03:31 +01:00
rcourtman
d0a60e1a92 Fix pulse-agent version exit handling
Refs #1424
2026-04-16 11:54:47 +01:00
rcourtman
36cb1d34d7 Mark capped self-hosted lock as historical
Refs #1409
2026-04-16 11:20:50 +01:00
rcourtman
4e34fab7ae Remove stale cap framing from uncapped self-hosted plans
Refs #1409
2026-04-16 11:17:07 +01:00
rcourtman
5f0c895e81 Rebuild Pulse Account no-cap upgrade bundle
Refs #1409
2026-04-16 10:34:10 +01:00
rcourtman
1bc08f3bc1 Canonicalize self-hosted purchase handoff intent
Refs #1409
2026-04-16 10:17:37 +01:00
rcourtman
a778f0507c Own checkout funnel analytics under cloud-paid 2026-04-16 01:41:29 +01:00
rcourtman
5914a4127d Make self-hosted core monitoring uncapped
Refs #1409
2026-04-16 01:21:57 +01:00
rcourtman
3ab2d95d93 Record homelab-friendly self-hosted pricing direction 2026-04-16 00:23:46 +01:00
rcourtman
c6885b3b7d Move monitored-system over-plan guidance into capacity section 2026-04-15 23:16:37 +01:00
rcourtman
071284361c Fix summary chart tooltip tracking 2026-04-15 21:11:52 +01:00
rcourtman
5e83877503 Flush OpenAI SSE buffers on EOF
Share OpenAI ChatStream finalization across DONE and clean EOF so buffered final chunks still produce tool calls and done events for OpenAI-compatible providers.\n\nFixes #1411
2026-04-15 17:37:51 +01:00
rcourtman
183fd41dd0 Resolve guest custom-rule alert paths
Fix snapshot, backup, powered-off, and config-reevaluation guest threshold resolution by routing them through shared guest alert context instead of override-only fallback paths.\n\nFixes #1418
2026-04-15 17:25:07 +01:00
rcourtman
f72ff5df5c Update infrastructure install path docs
Refs #1415
2026-04-15 17:00:32 +01:00
rcourtman
523a64565b Keep shared Proxmox storage coherent
Refs #1416
2026-04-15 16:55:13 +01:00
rcourtman
0fa1cf5fc1 Normalize legacy Unraid raw statuses
Refs #1400
2026-04-15 16:46:20 +01:00