Commit Graph

3213 Commits

Author SHA1 Message Date
rcourtman 6b610ebed9 patrol: add finding-level at-need Pulse Pro handoff for plan-locked installs
The free Patrol working surface stays clean of ambient paid surfacing, but a
plan-locked operator who expands an active critical or warning finding now gets
one honest, non-salesy capability line in the empty primary-action slot: "Pulse
Pro can investigate and fix issues like this." A "Learn about Pulse Pro" action
appears there only when the upgrade-prompt policy allows it.

This is the single allowed contextual at-need prompt — gated to plan-locked
installs, active critical/warning findings, and the upgrade-prompt policy — so
discovery happens at the moment of genuine need without re-tainting the daily-use
surface. Adds getPatrolProInvestigationHandoff in patrolControlPresentation,
threads the handoff through PatrolIntelligenceWorkspace into FindingsPanel,
codifies the carve-out across the owner and dependent contracts, and registers
the patrolControlPresentation test as patrol-page-and-state proof.
2026-06-24 21:03:20 +01:00
rcourtman 7e54d2e95c patrol: keep free working surface clean of paid-feature surfacing
Reverts the interim opt-in Patrol mode disclosure added in 8fab6e6e0. The
free Patrol surface stays a complete, clean monitoring tool: plan-locked
installs show only the positive Watch-only control with no paid modes,
disabled buttons, Pro badges, or disclosure of any kind in the daily-use
surface. Pro discovery belongs in Settings, the website/docs, and
contextual at-need prompts instead.

Firms up the patrol-intelligence contract (owner plus api-contracts and
frontend-primitives dependents) to drop the permissive carve-out entirely,
and updates the recorded decision to match. An opt-in list of unclickable
modes did neither job well: it was not clean enough to keep the free product
proud, and too passive to drive conversion.
2026-06-24 16:58:33 +01:00
rcourtman 8fab6e6e02 patrol: surface plan-locked modes via opt-in disclosure
Plan-locked (free) installs showed only a flat "Watch only" with no way to
discover that Patrol has other modes. Add an explicit "See what Patrol can do"
affordance beside the Watch-only control that reveals the four modes (paid
ones disabled and Pro-badged) on demand, so operators can discover the
capability tiers without turning the default header into a Pro-absence matrix.

Resolves a patrol-intelligence subsystem contract conflict (a permissive line
allowing disabled paid buttons vs a prohibition on rendering them) by
codifying opt-in disclosure as the rule across the owner and dependent
contracts: the default (closed) view stays positive Watch-only, and the paid
modes appear only behind the explicit affordance. Records the product decision
in status.json resolved_decisions.
2026-06-24 16:30:16 +01:00
rcourtman 1f6fe16e49 Make Z.ai provider base URL user-overridable
Z.ai keys on the coding subscription get 429 'Insufficient balance' on the standard /api/paas/v4 endpoint. Add a per-provider BaseURLField to the Z.ai registry entry, a ZaiBaseURL override on AIConfig (returned by GetBaseURLForProvider when set, else the standard default), the handler request/response/apply plumbing, and a 'Custom Base URL' field on the Z.ai provider card so operators can point at /api/coding/paas/v4. Mirrors the existing OpenAI custom-base-URL override; the standard endpoint remains the default for pay-as-you-go users. Adds config/handler/frontend proofs and updates the ai-runtime, api-contracts, frontend-primitives, agent-lifecycle, and storage-recovery contracts.
2026-06-23 22:49:55 +01:00
rcourtman 09fc029bd6 Canonicalize assistant provider registry
Add a registry-backed provider model for runtime metadata and chat-compatible transports.

Support Z.ai, Groq, Mistral, Cerebras, Together, and Fireworks through the shared chat-compatible client path while keeping native providers on their existing adapters. Expose provider metadata through settings and render the expanded provider set in the frontend.
2026-06-23 19:38:22 +01:00
rcourtman da0693b3b1 monitoring: resolve configured-host IPs off the monitor lock
getConfiguredHostIPs() and the new discoveryConfigSnapshot() now deep-copy config under a brief RLock and release it before resolving Proxmox/PBS/PMG hostnames via the injectable lookupConfiguredHostIP seam, so slow or blocked DNS can no longer stall monitor writers. The discovery IPBlocklist is the deduplicated merge of the operator-configured blocklist and the resolved configured-host IPs. Adds lock-freedom and merge coverage tests; updates the monitoring contract obligation.
2026-06-23 17:31:37 +01:00
rcourtman ee8a24e14a backend and governance: MCP contract, agent capabilities, API, and release-control
Manifest-backed MCP tools, prompts, and resources with surface affordance contracts; agent capability manifest and governance projection; API contract tests and capability route projection; operations-loop and intelligence-funnel telemetry; release-control subsystem documentation, registry, and tooling; licensing and configuration.
2026-06-23 17:26:15 +01:00
rcourtman d06c0a24b7 Govern verified support case handling 2026-06-16 16:46:46 +01:00
rcourtman 84f6302450 Fix Proxmox cluster snapshot polling read state
Refs #1437
2026-06-16 14:43:18 +01:00
rcourtman 6f792030b7 Record support operations release gate
Add the L2 release gate for canonical commercial support-case handling before data-protection-sensitive support actions.
2026-06-16 10:37:25 +01:00
rcourtman c04ac2f7cf Make private Pro publication block v6 releases 2026-06-15 15:37:13 +01:00
rcourtman 7235dcf504 Clarify Patrol event trigger runtime state
Expose runtime-blocked event triggers in Patrol status and surface the user-facing reason in the Patrol UI.
2026-06-15 10:08:54 +01:00
rcourtman 48e1efece7 Use patched Go toolchain for v6 release 2026-06-14 18:22:26 +01:00
rcourtman b9d28a2f83 Show thermal pressure in machine temperature cells
Render pressure-only host thermal state as compact table status when no Celsius reading is available.
2026-06-14 11:46:39 +01:00
rcourtman 6a162a1736 Add macOS thermal state reporting
Report Darwin pmset pressure separately from Celsius readings and carry it through host sensor state and resource details.
2026-06-14 11:07:47 +01:00
rcourtman 566c5b9da4 Add lab-agent hot-dev mode 2026-06-14 09:55:56 +01:00
rcourtman f81d35f3b1 Localize alerts overview journey 2026-06-14 09:09:12 +01:00
rcourtman 331d13afde Localize first-session monitoring journey 2026-06-14 08:41:11 +01:00
rcourtman 67defeaa32 Start localization foundation for settings journey 2026-06-14 00:02:48 +01:00
rcourtman 6559c37626 Converge AI Chat message actions on shared Button primitives 2026-06-13 23:48:55 +01:00
rcourtman dbb936e623 Converge standalone machine actions on ActionIconButton 2026-06-13 23:35:23 +01:00
rcourtman 52f094f11f Converge AI Chat icon actions on ActionIconButton 2026-06-13 23:27:33 +01:00
rcourtman 05f1a3298e Converge Patrol approval actions on shared Button primitives 2026-06-13 22:59:58 +01:00
rcourtman 85ae9ad540 Converge organization settings actions on shared Button primitives 2026-06-13 22:48:05 +01:00
rcourtman 418cf1648d Converge RBAC settings actions on shared Button primitives 2026-06-13 22:31:23 +01:00
rcourtman a418b8da27 Converge security auth actions on shared Button primitive 2026-06-13 22:20:03 +01:00
rcourtman e73420d4d5 Converge Proxmox backup view selector on shared primitive 2026-06-13 22:08:09 +01:00
rcourtman 55e058d1e6 Converge API token scope pills on shared selectable primitive 2026-06-13 21:52:18 +01:00
rcourtman 9578cd7368 Converge billing admin row actions on shared Button primitives 2026-06-13 21:37:30 +01:00
rcourtman 1af7d47792 Converge SSO actions on shared Button primitives 2026-06-13 21:23:21 +01:00
rcourtman 03b593461f Converge panel empty states on shared primitive 2026-06-13 21:11:57 +01:00
rcourtman c48dfa8261 Converge standalone metrics on platform table helper 2026-06-13 20:50:06 +01:00
rcourtman 66002e8ba7 Converge Pro license actions on shared Button primitives 2026-06-13 20:37:12 +01:00
rcourtman 51c47a2279 Converge GitHub star banner on shared action primitives 2026-06-13 20:24:17 +01:00
rcourtman 5330ce40c7 Converge commercial migration banner on shared notice primitive 2026-06-13 20:13:17 +01:00
rcourtman 0f58d9d9d4 Converge demo banner notice on InlineNotice primitive 2026-06-13 20:00:56 +01:00
rcourtman 0bc0b8a346 Converge toast notification chrome on shared primitives 2026-06-13 19:50:55 +01:00
rcourtman 14eda65f2e Converge update modal chrome on shared primitives 2026-06-13 19:40:04 +01:00
rcourtman 9418dbb330 Converge error fallback chrome on shared primitives 2026-06-13 19:26:56 +01:00
rcourtman 761127018e Converge alert web links on shared primitive 2026-06-13 19:14:49 +01:00
rcourtman 9802cf9dbc Add shared discovery loading fallback 2026-06-13 19:01:26 +01:00
rcourtman bcec5ac1fa Converge shared primitive spinners on LoadingSpinner 2026-06-13 18:43:53 +01:00
rcourtman a39e209918 Converge login spinners on LoadingSpinner 2026-06-13 18:31:58 +01:00
rcourtman 8c1c7dfda4 Converge settings spinners on LoadingSpinner 2026-06-13 18:18:51 +01:00
rcourtman d1262c31e5 Converge settings loading skeletons on shared primitive 2026-06-13 17:57:31 +01:00
rcourtman 4e7d7ddb4f Converge connection editor notices on CalloutCard 2026-06-13 17:36:27 +01:00
rcourtman cb53fd6b60 Converge settings external links on shared primitives 2026-06-13 17:16:11 +01:00
rcourtman 9ee313b8a7 Converge platform notices on shared primitive 2026-06-13 16:45:48 +01:00
rcourtman 09ed857869 Converge UI primitives and readiness guards 2026-06-13 16:31:52 +01:00
rcourtman 241ac9feaf Converge textarea fields on shared primitive 2026-06-13 15:15:55 +01:00