Commit graph

4826 commits

Author SHA1 Message Date
rcourtman
16386fc9d7 Polish: Standardize API calls in FirstRunSetup and SecurityWarning 2025-12-23 12:23:28 +00:00
rcourtman
d0971e32fc Polish: Fix ConnectStep leftover response check 2025-12-23 12:21:26 +00:00
rcourtman
d619f907ff Polish: Consistent API usage in SetupWizard 2025-12-23 12:21:14 +00:00
rcourtman
d633422b73 Polish: Standardize API calls in SetupWizard steps 2025-12-23 12:20:47 +00:00
rcourtman
244dbda623 Polish: Fix missing apiFetch import in NodeModal 2025-12-23 12:20:06 +00:00
rcourtman
00623ac8cb Polish: Fix API client usage lint errors 2025-12-23 12:19:50 +00:00
rcourtman
9d6a35880e Polish: Standardize API calls to use apiClient 2025-12-23 12:19:39 +00:00
rcourtman
369b9fa599 Polish: Fix duplicate import in Settings.tsx 2025-12-23 12:17:03 +00:00
rcourtman
68ab3ce9e8 Polish: Fix notification arguments in APITokenManager 2025-12-23 12:16:12 +00:00
rcourtman
04384401b1 Polish: Standardize notifications in remaining components 2025-12-23 12:16:02 +00:00
rcourtman
e665f67cd5 Polish: Consistent notifications in Settings modals 2025-12-23 12:15:23 +00:00
rcourtman
0e06859287 Polish: Consistent notifications in FirstRunSetup.tsx 2025-12-23 12:15:00 +00:00
rcourtman
cc60a58740 Polish: Consistent notifications in Settings.tsx 2025-12-23 12:14:47 +00:00
rcourtman
f2866befb8 Polish: Fix notification arguments in Alerts.tsx 2025-12-23 12:14:27 +00:00
rcourtman
7130e54837 Polish: Add warning to notificationStore 2025-12-23 12:14:08 +00:00
rcourtman
068b6ed530 Polish: Consistent notifications in Alerts.tsx 2025-12-23 12:13:45 +00:00
rcourtman
1522f6a735 Polish: Fix duplicate import in NodeModal 2025-12-23 12:13:11 +00:00
rcourtman
477e3d767e Polish: Remove unused toast imports and finalize notifications 2025-12-23 12:12:57 +00:00
rcourtman
a6283db5b1 Polish: Consistent notifications in PBS setup and scripts 2025-12-23 12:12:34 +00:00
rcourtman
96c8ed4342 Polish: Standardize manual setup notifications 2025-12-23 12:12:10 +00:00
rcourtman
fd2f3911a5 Polish: Consistent notifications in Quick Setup 2025-12-23 12:11:54 +00:00
rcourtman
888678cb86 Polish: Fix agent command generation logic in NodeModal 2025-12-23 12:11:08 +00:00
rcourtman
8e4e2d4af2 Polish: Usage of NodesAPI in NodeModal 2025-12-23 12:10:43 +00:00
rcourtman
c8f4705c5c Polish: Standardize agent command API usage 2025-12-23 12:09:57 +00:00
rcourtman
280be81ee9 Polish: Consistent API usage in UnifiedAgents 2025-12-23 12:06:43 +00:00
rcourtman
c7870da57f Polish: Fix remaining window.showToast in UnifiedAgents loop 2025-12-23 12:03:49 +00:00
rcourtman
37c42be85f Polish: refactor UnifiedAgents to use notificationStore 2025-12-23 12:00:43 +00:00
rcourtman
2dbd32a16b Refine v5 release: UI consistency and logging cleanup 2025-12-23 11:58:23 +00:00
rcourtman
62ac999466 feat(ui): Use inline copy buttons in agent setup for consistency. Related to #874 2025-12-23 10:32:47 +00:00
rcourtman
145403b068 fix: Update tier display name test for Pro Intelligence rename 2025-12-23 10:11:45 +00:00
rcourtman
15f0ef779b ux: Add step numbers to agent setup flow. Related to #872
- Step 1: Generate API token (with blue circle)
- Step 2: Installation commands (with green circle when unlocked)
- Shows locked preview of Step 2 before token generation, making it clear
  that installation commands will appear after generating a token
- Addresses user feedback about the unclear agent creation flow
2025-12-23 09:44:28 +00:00
rcourtman
4846b19877 fix: Correct misleading 'button above' text in node setup. Related to #873
The copy button is visually positioned to the right of the code block,
not above it. Changed to 'Click the copy button' for clarity.
2025-12-23 09:41:38 +00:00
rcourtman
7570c4810f feat: Add Connection URL override for agent installation. Related to #874 2025-12-23 09:40:01 +00:00
rcourtman
cb3444dd9b fix: Prevent re-migration of deleted env-based API tokens
When a user deletes an API token that was migrated from .env, track
the hash in a suppression list to prevent it from being re-migrated
on the next restart.

Changes:
- Add SuppressedEnvMigrations field to Config
- Add env_token_suppressions.json persistence
- Check suppression list during env token migration
- Record suppressed hash when deleting "Migrated from .env" tokens
- Update RemoveAPIToken to return the removed record

Related to #871
2025-12-23 05:10:47 +00:00
rcourtman
45016430b7 feat(license): rename premium tier to Pro Intelligence 2025-12-23 00:30:55 +00:00
rcourtman
77db408114 feat(ai): add finding validation layer to reduce patrol noise
- Add validateAIFindings() that cross-checks AI findings against actual metrics
- Filter out low-confidence findings (CPU <50%, memory <60%, disk <70%)
- Always allow critical findings, backup issues, and reliability findings through
- Update AI system prompt with stricter thresholds and explicit noise examples
- Add 'before creating a finding' checklist for AI (the 3am test)
- Update AI.md docs with clear value proposition and expectations
- Add comprehensive tests for the validation layer

This ensures paying users get immediate value without noise.
2025-12-22 23:28:09 +00:00
rcourtman
b65f42acb5 chore: AI patrol and baseline improvements
- Enhanced patrol finding display in Alerts.tsx
- Improved baseline store with better error handling
- Added clean thinking test coverage
- Updated patrol logic for better finding management
2025-12-22 23:12:11 +00:00
rcourtman
c2c352a004 feat: add PBS datastores to unified Storage view (#869)
PBS datastores are now displayed in the Storage overview alongside PVE
storage. Each PBS datastore is converted to a Storage entry with:
- type: 'pbs'
- content: 'backup'
- shared: true
- active: based on PBS instance status

This provides a complete picture of all storage resources in one view
while keeping detailed PBS info in the dedicated PBS section.

Closes #869
2025-12-22 22:12:04 +00:00
rcourtman
e4732af0f5 fix: use configured Guest URLs for PVE/PBS/PMG navigation (#870)
- Fix PVE nodes: buildNodeUrl in ProxmoxNodesSection.tsx now prioritizes
  guestURL over host (was ignoring guestURL entirely)
- Add PBS support: GuestURL field added to PBSInstance config, model,
  and API handlers
- Add PMG support: GuestURL field added to PMGInstance config, model,
  and API handlers
- Update NodeSummaryTable to use guestURL for PBS nodes
- Frontend types updated for PBS/PMG guestURL support

The Guest URL setting in node configuration now works correctly across
all node types. When set, it takes priority over the Host URL when
clicking on node names to navigate to the Proxmox/PBS/PMG web UI.

Closes #870
2025-12-22 22:05:25 +00:00
rcourtman
7664e941b0 fix: default mock mode to false 2025-12-22 21:47:07 +00:00
rcourtman
758a58bbd3 chore: gitignore .gemini/ folder 2025-12-22 21:46:18 +00:00
rcourtman
c9115efeb8 fix: prevent demo findings from being persisted to disk 2025-12-22 21:45:07 +00:00
rcourtman
5b997b8f2e Add clean separation between mock and real AI findings
- Add IsMockResource() helper to detect mock data resources by naming patterns
- Filter out heuristic findings from mock resources when PULSE_MOCK_MODE is off
- Mock findings still appear when demo mode is enabled
- Ensures users don't see mock data findings in production
2025-12-22 20:23:15 +00:00
rcourtman
c04b60c550 Fix demo mode detection to use PULSE_MOCK_MODE env var
The AI demo/mock findings were using a non-existent MOCK_ENABLED
env var. Changed to PULSE_MOCK_MODE which is the actual env var
used by the mock data system.
2025-12-22 20:09:56 +00:00
rcourtman
11cdc5d279 fix(ci): restore arm64 Docker builds in publish workflow
The staging images in preflight are intentionally amd64-only for speed,
but the publish workflow was just copying them instead of building
multi-arch. Now builds linux/amd64,linux/arm64 from source at publish.

Related to #868
2025-12-22 20:03:39 +00:00
rcourtman
828b092ea4 Unify AI patrol system: add Kubernetes analysis, enhance Docker/Podman detection
- Add AnalyzeKubernetes to PatrolConfig and enable by default
- Add analyzeKubernetesCluster() for K8s heuristic analysis
  - Detect offline clusters, nodes not ready, CrashLoopBackOff pods
  - Detect failed/pending pods and unavailable deployments
- Add K8s clusters to LLM context in buildInfrastructureSummary()
- Add kubernetes_cluster as valid resource type in AI prompt

- Enhance analyzeDockerHost() for Docker/Podman
  - Podman-aware messaging based on runtime
  - Add unhealthy container detection (health checks)
  - Add exited container with error detection
  - Add high CPU detection (>90%)
  - Add stale host detection (10+ minutes)
  - Tiered severity for restarts (>10 = critical)

- Add 20 new tests for K8s and Docker analysis
2025-12-22 18:03:46 +00:00
rcourtman
16bd9970e9 feat: add CLI commands for mock mode management
New commands:
  pulse mock enable   - Enable mock mode
  pulse mock disable  - Disable mock mode
  pulse mock status   - Show current status

Makes it easy to toggle between mock and real data without
manually editing config files.
2025-12-22 17:26:57 +00:00
rcourtman
b75728922c feat: add demo AI findings for mock mode
When MOCK_ENABLED=true, Pulse now injects realistic AI patrol
findings to showcase the AI features without requiring actual
LLM API calls. This enables the demo instance to demonstrate:

- Critical/warning/info findings with realistic content
- Patrol run history
- Actionable recommendations

Also includes refinements to dismissal logic from earlier work:
- Only 'not_an_issue' creates permanent suppression
- 'expected_behavior' and 'will_fix_later' just acknowledge
2025-12-22 17:16:26 +00:00
rcourtman
25be1ff5d9 feat: make Docker host names clickable in container table
When a Docker host has a custom URL configured (e.g., Portainer link),
the host name in the container table's group headers is now a clickable
link that opens the URL in a new tab. A link icon appears next to the
host name to indicate it's clickable.

Related to #860
2025-12-22 15:05:34 +00:00
rcourtman
8d0ca16124 docs: update AI.md with v5 patrol and finding management features
- Added finding management section (resolve, dismiss, suppress)
- Documented patrol service and severity levels
- Added AI-assisted remediation capabilities
- Added Ollama tool/function calling support note
- Added new troubleshooting tips for findings persistence
2025-12-22 14:43:56 +00:00