Commit graph

6823 commits

Author SHA1 Message Date
rcourtman
62cff03210 Remove 103 unused frontend exports
Dead-code sweep. Named exports flagged unused by ts-prune and confirmed
unreferenced by adversarial cross-file verification, removed via a TypeScript
compiler-API codemod (whole-declaration removal by name). tsc --noEmit over the
full project including all test files, and npm run lint (eslint + theme +
canonical-platform audits), both pass.

54 candidates deferred for safety: 1 false positive caught by the type-check
(WizardState is imported by SetupCompletionPanel.tsx), ~20 files whose export
removal orphans secondary imports/helpers (needs a follow-up cascading pass),
and 2 multi-declarator statements.
2026-06-03 12:37:38 +01:00
rcourtman
faefe6edc8 Remove 198 unreachable Go functions
Dead-code sweep. Functions flagged unreachable by golang.org/x/tools/cmd/deadcode
and confirmed unused across pulse, pulse-enterprise, pulse-pro and pulse-mobile by
adversarial cross-repo verification. Cross-module reachability was checked
explicitly (only pkg/ exported symbols are importable by other modules; internal/
packages and _test.go files are not). go build, go vet and test-compile all pass.
2026-06-03 12:29:37 +01:00
rcourtman
28bc1e9875 Align Machines disk bars with host tables 2026-06-03 11:52:34 +01:00
rcourtman
eab73d2453 Fix PBS backup identity matching 2026-06-03 11:43:20 +01:00
rcourtman
458ffd351b Scale Docker network attachment details 2026-06-03 11:36:36 +01:00
rcourtman
d19d27e915 Polish Machines disk telemetry display 2026-06-03 11:27:23 +01:00
rcourtman
9dfadc38e5 Surface Docker network attachments 2026-06-03 11:18:28 +01:00
rcourtman
eab62de61c Improve Machines disk summaries 2026-06-03 11:09:58 +01:00
rcourtman
f868487a68 Fix Mac machine disk filtering 2026-06-03 10:51:41 +01:00
rcourtman
c179afa89d Reduce workload agent cue density
Replace repeated per-row agent install actions with one filtered workload summary, while keeping the per-guest install action in the drawer.
2026-06-03 10:46:40 +01:00
rcourtman
83178f6e58 Expose workload agent action readiness
Show an agent install cue on running VM and LXC workloads that lack a merged Pulse Agent, and carry the same action-readiness path into the guest drawer.
2026-06-03 10:37:26 +01:00
rcourtman
814e9f8a91 Add Proxmox stale agent notice
Wire Proxmox nodes into the shared outdated-agent notice and add latest-detail copy for hybrid platform pages so Machines, TrueNAS, and Proxmox do not imply baseline data is absent.
2026-06-03 10:15:46 +01:00
rcourtman
e813e5ea17 Tighten Machines stale agent notice copy
Clarify that stale Machines agents are missing newer command support and agent-managed details, not baseline telemetry that is still visible.
2026-06-03 10:05:14 +01:00
rcourtman
54749cdb59 Generalize stale agent upgrade cues
Surface the shared outdated-agent notice on Machines, Kubernetes, and TrueNAS, and link platform notices back to Infrastructure settings for upgrade commands.
2026-06-03 09:57:19 +01:00
rcourtman
65cdcdd457 Add v5 agent self-update runtime proof
Extend the unified-agent RC rehearsal with an optional local v5-to-v6 process-swap check.

Record the v5.1.34 to v6.0.0-rc.6 proof result for the upgrade-continuity gate.
2026-06-03 09:39:25 +01:00
rcourtman
e17916e3bc Surface v5 agent migration security guidance
Warn when update readiness includes v5 agents and document the trusted-transport first hop.
2026-06-03 09:18:07 +01:00
rcourtman
1afd708e5a Harden unified agent update preflight
Record the single pulse-agent product invariant and clarify Docker / Podman module terminology.
2026-06-02 23:54:48 +01:00
rcourtman
6e3e1a4e97 Flag outdated agents inline on the Docker page
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
A platform page hides its detail tabs (Docker images/storage/networks/swarm)
when the matching inventory is absent. An agent too old to report that
inventory therefore makes the tabs silently disappear, indistinguishable
from a host that genuinely has none. The page gave the user no breadcrumb to
the real cause (a stale agent).

Add a reusable, self-explaining inline notice that appears only when a host on
the page runs a Pulse agent behind the server version, naming the host, its
version, the target version, and what it is missing. It stays invisible in the
healthy case, so the surface stays clean.

- agentVersion.ts: semver-aware version parse/compare (tolerates v-prefix and
  +build metadata, ranks rc.N correctly) and collectOutdatedAgentHosts, which
  reads docker- or agent-meta agent versions and skips hosts it cannot compare.
- PlatformOutdatedAgentNotice.tsx: shared platformPage notice component.
- DockerPageSurface: compute outdated hosts from the model + server version and
  render the notice above the tab content.
- vitest coverage for the comparison logic and the notice copy.

Compares against the server's running version rather than the release-gated
currentAgentTargetVersion(), so the signal also works on dev/rc builds.
2026-06-02 23:42:05 +01:00
rcourtman
d8f5519eed Fix provider MSP tenant rootless startup 2026-06-02 21:31:17 +01:00
rcourtman
c7e50d5602 Harden provider-hosted MSP isolation
Broker provider control-plane Docker access through a socket proxy, remove broad host mounts, align audit and rate-limit proxy trust, harden tenant runtime containers, restrict workspace report logo paths, and update provider deploy guardrails.
2026-06-02 21:10:13 +01:00
rcourtman
68e3a015c0 Reconcile provider-hosted MSP copy 2026-06-02 19:14:18 +01:00
rcourtman
d6964832a0 Add entitlement-gated report branding 2026-06-02 18:11:25 +01:00
rcourtman
d729461cad Harden provider MSP tenant isolation
- isolate provider MSP tenant runtimes onto per-client Docker networks
- add adversarial proofs for workspace cap races, handoff retargeting, and org-bound agent report retargeting
- pin provider deploy proof to start Traefik before tenant network creation
2026-06-02 17:34:10 +01:00
rcourtman
473a0ddee6 Add provider MSP tenant rollout upgrade proof 2026-06-02 16:45:03 +01:00
rcourtman
a0f2fcf1fe Add provider MSP upgrade runner 2026-06-02 16:19:51 +01:00
rcourtman
e86143f07f Surface provider MSP backup readiness 2026-06-02 16:02:04 +01:00
rcourtman
42fb8eed3f Publish provider MSP control-plane image 2026-06-02 15:51:21 +01:00
rcourtman
25febfbf82 Fix provider MSP compose mount identity 2026-06-02 15:25:05 +01:00
rcourtman
f68d0ae079 Add provider MSP first-time setup artifact 2026-06-02 15:18:11 +01:00
rcourtman
5505f930c6 Add provider MSP compose install proof runner 2026-06-02 15:06:49 +01:00
rcourtman
7e21263947 Add provider MSP install proof artifact test 2026-06-02 14:56:55 +01:00
rcourtman
dd5df4285c Verify v6 Ceph multi-source pool alerts are deduplicated (#1341)
Some checks are pending
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
When the same physical Ceph cluster is reported by both the Proxmox API
poller and a Pulse host-agent (same FSID), v5 stored it under two pool-ID
namespaces and ran alert evaluation on the raw, un-deduplicated list,
producing duplicate/flapping Ceph pool alerts and a per-pool override that
appeared to revert between identities.

v6 closes this without the v5 'agent:'-prefix patch: both ingest paths
reconcile by FSID before alert evaluation. State.UpsertCephCluster
(host-agent) and State.UpdateCephClustersForInstance (Proxmox) both funnel
through upsertCephClusterInSlice, which collapses same-FSID clusters into a
single reconciled entry, and both call sites run checkCephPoolStorage on the
STORED cluster. The per-pool override resolves across source aliases via
storageThresholdLookupIDs/cephPoolStorageSourceAliasID, and
clearStorageAliasAlerts removes any alias-keyed alert.

This adds a regression test asserting the observable outcome for the exact
dual-source scenario (host-agent + Proxmox API, same FSID, one pool at ~61%
with a 50% per-pool override): exactly one active Ceph pool usage alert,
override honored, no second/flapping alert across either ingest order or
repeated interleaved cycles. No behavior change.
2026-06-02 14:52:47 +01:00
rcourtman
4c31fa88f3 Add provider MSP install proof 2026-06-02 14:50:36 +01:00
rcourtman
e5a7300aff Add provider MSP workspace recovery 2026-06-02 14:28:16 +01:00
rcourtman
a2e860dc8c Add provider MSP backup restore 2026-06-02 14:14:07 +01:00
rcourtman
c9f84c5192 Add provider MSP backup command 2026-06-02 14:03:19 +01:00
rcourtman
e46f4d648e Prove provider MSP token rotation 2026-06-02 13:41:37 +01:00
rcourtman
f128c0b8cd Add provider MSP status command 2026-06-02 13:33:27 +01:00
rcourtman
c9c415d7a6 Require license-backed provider MSP proof 2026-06-02 13:22:15 +01:00
rcourtman
3630ab1867 Verify provider MSP agent report ingest 2026-06-02 13:14:16 +01:00
rcourtman
e99ca62c81 Add provider MSP preflight readiness checks 2026-06-02 13:02:13 +01:00
rcourtman
3f20c85e86 Add provider MSP proof command
Adds a provider-hosted MSP proof command that exercises provider bootstrap, workspace creation, hosted tenant install-token generation, handoff exchange, setup-facts visibility, and cross-tenant token isolation.
2026-06-02 12:45:48 +01:00
rcourtman
5134e36c28 Add provider-hosted MSP install path 2026-06-02 12:11:35 +01:00
rcourtman
d90352ea89 Add provider-hosted MSP control-plane mode
Add a Stripe-free provider-hosted MSP mode with local MSP plan workspace limits and portal behavior that hides hosted billing surfaces when no billing record exists.
2026-06-02 11:37:29 +01:00
rcourtman
57486cee88 Harden MSP onboarding proof gaps 2026-06-02 10:15:35 +01:00
rcourtman
2d1ad0db4c Make MSP onboarding client-first 2026-06-02 09:36:48 +01:00
rcourtman
0c1bd50460 Harden MSP onboarding flow proof 2026-06-02 09:17:26 +01:00
rcourtman
fe06747418 Improve MSP onboarding guidance 2026-06-02 08:55:40 +01:00
rcourtman
d425f02661 Improve MSP workspace setup onboarding 2026-06-02 00:27:19 +01:00
rcourtman
dfb9bdcd18 Make MSP workspace setup flow first-class 2026-06-01 23:49:30 +01:00