Commit graph

3225 commits

Author SHA1 Message Date
rcourtman
2ed1c3b839 Proxy missing host-agent binaries from GitHub releases (#1254) 2026-03-25 13:11:31 +00:00
rcourtman
1de1392c9b Preserve provider metadata in AI model lists (#1320) 2026-03-25 13:08:15 +00:00
rcourtman
5f372e257f Respect patrol model provider in quick analysis 2026-03-25 13:01:43 +00:00
rcourtman
b4e4f6b92d Treat vm meminfo total-used fallback as low-trust (#1319) 2026-03-25 12:49:31 +00:00
rcourtman
fba1fadccd Make alert node display name resolution instance-aware (#1218) 2026-03-25 12:44:22 +00:00
rcourtman
93475f3941 Self-heal stale Proxmox auto-register markers (#1267) 2026-03-25 12:34:50 +00:00
rcourtman
9c2a56d351 Respect quiet hours for recovery notifications (#1068) 2026-03-25 12:27:35 +00:00
rcourtman
8119050819 Accept tokenId/tokenSecret aliases for node config API (#1147) 2026-03-25 12:23:39 +00:00
rcourtman
69f44d3829 Handle empty chat session payloads in AI settings (#1149) 2026-03-25 12:12:49 +00:00
rcourtman
ffaeea18d6 Scope cluster TLS fingerprints to their own endpoints (#1199) 2026-03-25 12:10:09 +00:00
rcourtman
2acf2e9ef9 Reduce metrics store transaction churn (#1124) 2026-03-25 12:06:28 +00:00
rcourtman
73bebf2f4f Respect docker filters for batch update targets (#1361) 2026-03-25 11:57:38 +00:00
rcourtman
930738593b Pass setup token in Proxmox auto-register requests (#1303) 2026-03-25 11:52:46 +00:00
rcourtman
83f8e93543 Use org-specific metrics store for report generation (#1186) 2026-03-25 11:48:57 +00:00
rcourtman
6c3a2cd701 Always apply saved full-width mode after auth (#1130) 2026-03-25 11:40:34 +00:00
rcourtman
c8690a9a55 Persist Docker custom URLs across container updates (#1054) 2026-03-25 11:37:22 +00:00
rcourtman
73786a9e27 Skip patrol triggers when patrol is disabled (#1258) 2026-03-25 11:33:34 +00:00
rcourtman
a00081fce8 Accept legacy installer boolean flags (#1299) 2026-03-25 11:29:23 +00:00
rcourtman
b20221429f Harden Proxmox setup SSH key handling (#1297) 2026-03-25 11:27:25 +00:00
rcourtman
2fa8379a6b Fix resource stats alert counts (#1365) 2026-03-25 11:19:03 +00:00
rcourtman
4d4344911a Harden PVE setup token extraction (#1312) 2026-03-25 11:09:19 +00:00
rcourtman
c12f5fb5a4 Restart AI chat on provider and patrol model changes (#1339) (#1360) 2026-03-25 10:58:12 +00:00
rcourtman
9f93193d2e Fix settings node table full-width layout (#1304) 2026-03-25 10:52:33 +00:00
rcourtman
5aa8be9736 Fix Docker update alert disable handling (#1355) 2026-03-25 10:47:57 +00:00
rcourtman
1885bd02c0 Fix Proxmox tag color parsing (#1348) 2026-03-25 10:40:31 +00:00
rcourtman
40249947ed Fix template backup orphan detection race (#1352) 2026-03-25 10:36:33 +00:00
rcourtman
b9c6f504d8 Fix shared storage override matching (#1341) 2026-03-25 10:25:01 +00:00
rcourtman
b5ee2c1f98 Fix guest override migration for canonical IDs (#1334) 2026-03-25 10:13:10 +00:00
rcourtman
ab85c5a936 Suppress QNAP internal RAID false positives (#1362) 2026-03-25 10:05:41 +00:00
rcourtman
7422de8505 Respect configured usage thresholds in metric coloring (#1358) 2026-03-25 09:55:27 +00:00
rcourtman
f9bf42498f Fix Gemini cost estimation tiers (#1360) 2026-03-25 09:55:17 +00:00
rcourtman
5ea27a9e87 Fix ThresholdsTable test fixture props 2026-03-25 09:55:12 +00:00
rcourtman
2fe22c3308 fix(backups): prevent template backups from being flagged as orphaned
Some checks failed
Build and Test / Secret Scan (push) Failing after 5s
Build and Test / Frontend & Backend (push) Failing after 1m8s
Core E2E Tests / Playwright Core E2E (push) Failing after 4m38s
Proxmox VM/LXC templates are intentionally excluded from the monitored
guest list, but their backup files exist on storage. The orphan-detection
logic was firing for every template backup because the VMID was never
in the guest lookup maps.

Fix: track template VMID→node pairs in State.templateVMIDs (unexported,
not serialised to API/frontend) during the resources poll loop, expose
via StateSnapshot.TemplateVMIDs, and use in both buildGuestLookups() and
the storage backup node-resolution map so orphan detection treats template
backups as valid. Also preserves the template map through the cluster
health grace-period path (zero-resource preservation), the partial-node
grace-period path, and clears it on instance removal.

Closes #1352
2026-03-17 09:04:22 +00:00
rcourtman
62ad7b72d7 fix(alerts): allow tab navigation when alerts are disabled
Some checks failed
Core E2E Tests / Playwright Core E2E (push) Has been cancelled
Build and Test / Secret Scan (push) Has been cancelled
Build and Test / Frontend & Backend (push) Has been cancelled
Alerts being toggled off should only suppress notifications, not lock
users out of the Thresholds, Destinations and Schedule config tabs.
Removes the redirect-to-overview effect and disabled state from all
sidebar and mobile tab buttons when alerts are inactive.
2026-03-15 21:49:03 +00:00
rcourtman
3a02dd171b fix(proxmox): add GetClusterOptions to ClusterClient for tag colour fetch 2026-03-15 19:51:20 +00:00
rcourtman
caff845c1a fix(ui): use Proxmox tag colours from datacenter config
Pulse was generating tag colours from a hash of the tag name instead
of using the colours configured in Proxmox. Now polls /cluster/options
once per PVE instance and merges the tag-style colour map into state,
which the frontend uses as the first-priority colour source for tag
badges. Falls back to the existing special-tag and hash-based colours
when Proxmox hasn't set a custom colour for a tag.
2026-03-15 19:49:46 +00:00
rcourtman
da928cd9d3 feat(alerts): add UI toggle to disable container update alerts
Some checks failed
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
Core E2E Tests / Playwright Core E2E (push) Waiting to run
Helm CI / Lint and Render Chart (push) Has been cancelled
Backend already supported updateAlertDelayHours: -1 to suppress update
alerts but there was no way to configure it from the UI. Adds a toggle
in Settings → Alerts → Docker tab that maps to that backend field.
2026-03-15 13:28:48 +00:00
rcourtman
24856ed7b2 Auto-update Helm chart version to 5.1.24 2026-03-14 17:20:08 +00:00
rcourtman
da982d0fca Prepare v5.1.24 release 2026-03-14 16:43:26 +00:00
rcourtman
8a43a964b6 fix(ai): wire patrol circuit breaker on first-time configure 2026-03-13 12:10:14 +00:00
rcourtman
ae2edbde20 fix(ai): complete wiring on first-time configure; guard Ollama fallback
Three follow-up fixes:

1. RestartAIChat() now performs the full post-start wiring (MCP providers,
   patrol adapter, investigation orchestrator) when the service starts for
   the first time via Restart(). Previously these were only wired via
   StartAIChat(), leaving first-time configure with a partially wired service.

2. The Ollama→OpenAI-compatible fallback in createProviderForModel is now
   guarded by !strings.HasPrefix(modelStr, "ollama:") so explicit
   "ollama:llama3" models are never silently rerouted to a different provider.

3. Windows install script registration check now uses the $Hostname override
   (if set) instead of always looking up $env:COMPUTERNAME, so post-install
   verification works correctly when a custom hostname is specified.
2026-03-13 12:06:08 +00:00
rcourtman
6b317f08d2 fix(agent): add --hostname support to Windows PowerShell install script
Adds $Hostname / $env:PULSE_HOSTNAME parameter so users can set a
custom display name at install time, matching the Linux install.sh
behaviour. Persists to config.json and passes --hostname to the agent
binary args.

Closes discussion #818
2026-03-13 11:54:12 +00:00
rcourtman
e137f3fbf7 fix(ai): start chat service on first-time configure without restart
When Pulse starts before AI is configured, legacyService is nil.
Saving AI settings called Restart() which bailed immediately on the
nil check, leaving the service unstarted (503 on /api/ai/sessions)
until a full process restart.

Merged the nil and !IsRunning checks so first-time configure now
starts the service inline, same as the already-handled stopped case.

Also: bare model names that ParseModelString routes to Ollama (e.g.
"qwen3-omni") now fall back to a configured custom OpenAI base URL
when Ollama is not explicitly configured — handles manually-typed
model names on self-hosted OpenAI-compatible endpoints.

Fixes #1339, #1296
2026-03-13 11:13:27 +00:00
rcourtman
fde4d9124e fix(frontend): defer discovery tab initialization until opened
Some checks failed
Build and Test / Secret Scan (push) Has been cancelled
Build and Test / Frontend & Backend (push) Has been cancelled
Core E2E Tests / Playwright Core E2E (push) Has been cancelled
2026-03-10 23:14:30 +00:00
rcourtman
d05a00b931 fix(monitoring): smooth transient VM memory fallback spikes 2026-03-10 23:06:17 +00:00
rcourtman
40a85175be fix(frontend): preserve drawer chart range across live updates 2026-03-10 22:56:30 +00:00
rcourtman
afcfb23a30 fix(monitoring): retain intermittent FreeBSD SMART data 2026-03-10 22:52:25 +00:00
rcourtman
1a582ccc35 fix(diagnostics): honor PVE fingerprint in diagnostics probe 2026-03-10 22:46:12 +00:00
rcourtman
92b6da83ea Refine tooltip labels: Reclaimable cache, Shown in Proxmox
Some checks failed
Build and Test / Secret Scan (push) Waiting to run
Build and Test / Frontend & Backend (push) Waiting to run
Core E2E Tests / Playwright Core E2E (push) Waiting to run
Helm CI / Lint and Render Chart (push) Has been cancelled
2026-03-10 10:35:19 +00:00
rcourtman
9601afb44c Rename Cache to Reclaimable and add Proxmox reconciliation in tooltip
Rename the amber segment label from "Cache" to "Reclaimable" to avoid
jargon confusion. Add a "Proxmox view: X%" line in the tooltip so
users immediately see why the percentage differs from Proxmox (which
includes reclaimable cache as used memory).
2026-03-10 10:26:50 +00:00