Commit graph

929 commits

Author SHA1 Message Date
rcourtman
324f3be1c8 Move v5 maintenance flow onto release/5.1 2026-04-14 19:22:12 +01:00
rcourtman
a24af45c67 Add v6 RC announcement surfaces to v5 2026-04-14 16:51:19 +01:00
rcourtman
b017f8edcd fix: remediate default branch dependency alerts 2026-04-09 10:28:54 +01:00
rcourtman
d2f8800fc3 Add unified agent placement guidance 2026-04-05 23:35:54 +01:00
rcourtman
2a99e03831 Add Ollama basic auth support 2026-04-01 12:00:38 +01:00
rcourtman
31753e5536 Stabilize guest threshold overrides across node moves (#1334)
Some checks are pending
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
2026-03-31 23:18:19 +01:00
rcourtman
a8ee51fb99 Fix code scanning findings 2026-03-28 10:58:57 +00:00
rcourtman
5b1f1e6cff Preserve drawer history range across reactive key changes (#1319) 2026-03-27 16:55:01 +00:00
rcourtman
d4242d9a13 Fix ZFS pool attachment in storage frontend (discussion #1351) 2026-03-27 14:59:52 +00:00
rcourtman
17bfec6d1d Gate discovery tab on AI discovery setting 2026-03-27 14:15:22 +00:00
rcourtman
39f04b324a Preserve guest drawer chart range across ID changes (#1319) 2026-03-27 13:59:11 +00:00
rcourtman
fe5f660524 Clarify dedicated agent token guidance (#1353) 2026-03-27 10:59:32 +00:00
rcourtman
640c414c0c Upgrade frontend ESLint security dependencies 2026-03-26 20:54:42 +00:00
rcourtman
14a149c369 Upgrade frontend lint and test dependencies 2026-03-26 20:33:59 +00:00
rcourtman
cb011f7f14 Fix dependency security vulnerabilities
Some checks are pending
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
2026-03-26 11:57:26 +00:00
rcourtman
71351de987 Refresh Docker custom URLs after container updates (#1054) 2026-03-26 11:51:19 +00:00
rcourtman
818541c37e Fix Docker search action overlap (#1361) 2026-03-26 09:26:13 +00:00
rcourtman
ca66581b6e Match Proxmox tag color generation (#1348) 2026-03-26 00:27:07 +00:00
rcourtman
1de1392c9b Preserve provider metadata in AI model lists (#1320) 2026-03-25 13:08:15 +00:00
rcourtman
69f44d3829 Handle empty chat session payloads in AI settings (#1149) 2026-03-25 12:12:49 +00:00
rcourtman
73bebf2f4f Respect docker filters for batch update targets (#1361) 2026-03-25 11:57:38 +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
9f93193d2e Fix settings node table full-width layout (#1304) 2026-03-25 10:52:33 +00:00
rcourtman
1885bd02c0 Fix Proxmox tag color parsing (#1348) 2026-03-25 10:40:31 +00:00
rcourtman
b9c6f504d8 Fix shared storage override matching (#1341) 2026-03-25 10:25:01 +00:00
rcourtman
7422de8505 Respect configured usage thresholds in metric coloring (#1358) 2026-03-25 09:55:27 +00:00
rcourtman
5ea27a9e87 Fix ThresholdsTable test fixture props 2026-03-25 09:55:12 +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
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
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
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
40a85175be fix(frontend): preserve drawer chart range across live updates 2026-03-10 22:56:30 +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
rcourtman
7dab977d91 Add split memory bar showing Used | Cache | Free segments (#1302)
Show reclaimable buff/cache as a distinct amber segment between used
(green) and free (gray) in the memory bar. This explains why Pulse's
memory percentage differs from Proxmox: Pulse reports cache-aware
usage (MemAvailable) while Proxmox includes cache as used (Total-Free).

Backend: add Cache field to Memory model, derived from MemInfo
(Available - Free). Only uses MemInfo.Free (not FreeMem fallback) to
avoid inflating cache by the balloon gap on ballooned VMs.

Frontend: StackedMemoryBar renders three segments with tooltip
breakdown. Tooltip Free accounts for balloon limit when active.
Percentage label and alerts remain cache-aware (unchanged).
2026-03-10 10:16:14 +00:00
rcourtman
a4b0771974 Prevent removed host agents from resurrecting via in-flight reports (#1331)
Host agents removed from the UI would reappear on the next report cycle
because there was no rejection mechanism — unlike Docker agents which
already had resurrection prevention. Mirror the Docker agent pattern:

- Track removed host IDs in a `removedHosts` map with 24hr TTL
- Persist removal records in `State.RemovedHosts` for frontend display
- Reject reports from removed hosts in `ApplyHostReport()`
- Add `AllowHostReenroll()` + API route to clear the block
- Show removed host agents in the Settings UI with "Allow re-enroll"
- Sync removed-agent maps from state on startup for all agent types
- Fix mock integration snapshot missing `RemovedDockerHosts` field
2026-03-09 17:52:34 +00:00
rcourtman
0dd3fc779b Fix alert disable notification suppression
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-07 18:40:08 +00:00
rcourtman
64f3bfa922 Bump dompurify to 3.3.2 to fix XSS vulnerability (Dependabot #64)
DOMPurify 3.1.3–3.3.1 has an XSS vulnerability via missing rawtext
element sanitization. Bump to 3.3.2 which includes the fix.
2026-03-07 10:46:12 +00:00
rcourtman
ba8490c252 fix(ui): use SolidJS class prop instead of deprecated className 2026-03-05 10:17:51 +00:00
rcourtman
1491e0ee6e fix(alerts): add stable sort tiebreaker to prevent hostname scrambling (#1218)
When multiple alerts fire in the same polling cycle they share identical
startTime values. Without a tiebreaker, JS sort returns them in arbitrary
order on each reactive recomputation, causing hostnames to visually
shuffle. Use alert.id as a deterministic lexicographic tiebreaker in both
the Overview and History tab sort comparators.
2026-03-05 10:01:43 +00:00
rcourtman
3a263bc4f0 fix(ai): pass correct identifiers to Docker container discovery (#1315)
Use host.agentId and container.name for DiscoveryTab props to match
backend storage keys. Previously host.id (derived ID) and container.id
(Docker hash) were used, causing discovery lookups to always miss.
2026-03-05 10:01:43 +00:00
rcourtman
a8e562034e fix(ai): restore dismissed patrol findings and add regression tests 2026-03-03 19:53:55 +00:00
rcourtman
a4571f580b fix(monitoring): harden VM memory selection and flag repeated VM usage 2026-03-03 16:19:17 +00:00
rcourtman
768b6d8b7a fix(frontend): resolve npm audit advisories in lockfile 2026-03-02 23:59:34 +00:00
rcourtman
d43dfbc490 feat(ui): add host removal action to hosts table
Add an actions menu to the hosts overview with a "Remove host from
Pulse" button. Includes permission checks (requires settings:write
scope), confirmation handling, and a security regression test for
the delete endpoint scope enforcement.
2026-03-01 23:28:33 +00:00
rcourtman
b1ff7e006f fix(ui): show PULSE_PUBLIC_URL value in settings and expand node tables to full width (#1305, #1304)
Expose PublicURL from runtime config in the system settings API response
so the frontend displays the actual value instead of the placeholder when
the env var is set.

Add w-full to PVE, PBS, and PMG node tables so they expand to fill the
container in full-width mode.
2026-03-01 14:42:30 +00:00
rcourtman
9aee8fa293 fix(ui): add Pro badge to Reporting tab and reduce patrol trigger log noise (#1285, #1258)
Show "Pro" badge on the Reporting settings tab so users know upfront
that advanced reporting requires a Pro license, rather than discovering
it after filling out the form.

Downgrade patrol trigger queue-full and rejection messages from Warn to
Debug — these are normal rate-limiting behavior, not actionable warnings.
2026-02-26 21:09:13 +00:00