Commit Graph

486 Commits

Author SHA1 Message Date
Pulse Monitor c88602884d fix: restore API token functionality when auth is disabled
- API tokens now work even when DISABLE_AUTH is set
- Added API token section back to Security tab in settings
- API tokens can protect API access for automation while keeping UI open
- Invalid tokens are rejected even with auth disabled
- Export/import endpoints still require valid API token
2025-08-21 12:26:08 +00:00
Pulse Monitor b94900bec8 improve: reorder tables to group infrastructure servers together
- PBS Servers table now appears right after Proxmox Nodes table
- Better logical flow: infrastructure servers → guest resources → storage
- Makes more sense to have all server-level monitoring grouped together
2025-08-21 11:56:56 +00:00
Pulse Monitor ac24547075 improve: collapse global thresholds by default and add PBS Servers table
- Global thresholds section now starts collapsed to reduce visual clutter
- Added dedicated PBS Servers table for monitoring PBS nodes separately
- PBS servers show CPU and Memory thresholds (when metrics are available)
- PBS servers have distinctive indigo color badge for easy identification
- Only shows PBS servers that have metric data (requires Sys.Audit permission)
2025-08-21 11:54:55 +00:00
Pulse Monitor bb4b3b0ba8 revert: remove PBS nodes from Proxmox Nodes table
- PBS nodes don't belong in the 'Proxmox Nodes' table
- They're fundamentally different infrastructure (backup vs hypervisor)
- The mixed presentation was confusing and out of place
- Reverting the previous hasty implementation
2025-08-21 11:50:42 +00:00
Pulse Monitor ba6188e43f feat: add PBS node metrics to threshold configuration table
- PBS nodes now appear in the Nodes table when configured with proper permissions
- Shows CPU and memory metrics for PBS nodes (disk metrics not available)
- PBS nodes are clearly labeled with 'PBS:' prefix and indigo color badge
- Only shows PBS nodes that have metric data available (requires Sys.Audit permission)
- Disk threshold column is automatically hidden for PBS nodes
2025-08-21 11:43:27 +00:00
Pulse Monitor b3ef7fdabb improve: add node-based grouping to VMs & Containers table
- Guests table now groups resources by node with visual separators
- Each node group has a header row showing the node name
- Resources within each node group are sorted by VMID
- Maintains clean visual hierarchy across all three tables
2025-08-21 11:36:23 +00:00
Pulse Monitor b113a48872 refactor: split threshold table into 3 separate tables
- Created reusable ResourceTable component for rendering resource tables
- Split single large table into 3 distinct tables: Nodes, VMs & Containers, Storage
- Each table only shows relevant metrics (nodes don't show I/O, storage only shows usage)
- Improved organization and visual clarity of threshold configuration
2025-08-21 11:30:48 +00:00
Pulse Monitor 00f05d296d revert: go back to node-based grouping for guests
- Reverted to original grouping where guests are under their node names
- Removed "on <node>" text for guests (redundant since they're grouped by node)
- Kept "on <node>" for storage devices (still useful there)
- Order is now: Nodes first, then node groups (delly, minipc), then Storage last
2025-08-21 11:19:49 +00:00
Pulse Monitor 56549f0c95 improve: better categorization in threshold table
- Changed from node-based grouping to type-based grouping
- Now shows three clear sections: Nodes, Guests, Storage (in that order)
- Guests now show "on <node>" to identify which node they belong to
- Within each section, resources are sorted by node first, then by name/vmid
- Cleaner visual hierarchy that's easier to understand

This makes the table structure more logical - you see all nodes together,
all guests together (but can still see which node they're on), and all
storage together.
2025-08-21 11:17:19 +00:00
Pulse Monitor 20de3a4626 improve: show node association for storage devices in threshold table
- Storage devices now display "on <node>" next to their name
- Makes it clear which node each storage device belongs to
- Helps users identify storage when multiple nodes have similarly named pools
2025-08-21 11:03:48 +00:00
Pulse Monitor 88b972f8fd feat: add storage device overrides to threshold table
- Added Storage column to threshold table for individual storage thresholds
- Storage devices now appear in their own "Storage" group
- Each storage device can have its own usage threshold override
- Storage shows "-" for CPU/Memory/Disk/IO metrics (not applicable)
- Added orange badge styling for storage device type
- Updated Override interface to support storage type and usage threshold
- Fixed colspan values for new 13-column layout

This allows users to set different thresholds for different storage pools
(e.g. tighter monitoring for system storage vs bulk storage)
2025-08-21 11:01:10 +00:00
Pulse Monitor f2d5231c25 fix: migrate existing configs to have I/O metrics off
- Added migration logic to set I/O thresholds to 0 when loading saved configs
- Only migrates if values match old defaults (150 MB/s disk, 200 MB/s network)
- Ensures existing users get the new "Off by default" behavior
- Prevents saved configs from overriding the new defaults
2025-08-21 10:51:15 +00:00
Pulse Monitor f071dbbf5f improve: set I/O metrics to Off by default
- Changed default thresholds for diskRead/diskWrite/networkIn/networkOut to 0 (Off)
- UI now shows "Off" instead of "0 MB/s" for disabled I/O metrics
- Reduces alert noise for users who don't need I/O monitoring
- Advanced users can still enable them by setting custom thresholds
- Prevents common false positives like hourly pihole database writes

This makes Pulse focus on the core metrics (CPU, memory, disk space) by default
while keeping I/O monitoring available for those who need it.
2025-08-21 10:48:44 +00:00
Pulse Monitor ede3f24648 improve: dim entire row when alerts are disabled in threshold table
- Added 40% opacity to rows where alerts are disabled
- Dimmed text color for disabled resource names
- Provides clear visual feedback that alerts are off for that guest
- Row remains interactive so users can re-enable alerts
2025-08-21 10:41:27 +00:00
Pulse Monitor 0389c0fb90 cleanup: remove alert configuration icons from dashboard
- Removed cog/bell-slash icons next to guest names
- Users can see alert configuration in the Alerts settings tab
- Cleaned up unused alert override loading code
- Simplified dashboard display to reduce visual clutter
2025-08-21 10:39:56 +00:00
Pulse Monitor 86bc5c32fa feat: comprehensive alert system improvements
- Fixed alert units display (MB/s vs %) in notifications and UI
- Added missing threshold controls for disk I/O and network metrics
- Redesigned threshold table with active alert indicators
- Added ability to disable node connectivity alerts
- Improved visual distinction between defaults and overrides
- Added keyboard shortcuts for search (type to search, ESC to clear)
- Better threshold management with automatic cleanup of empty overrides
- Enhanced UI with proper units display for all metrics

addresses #336
2025-08-21 10:19:56 +00:00
Pulse Monitor a1c5adb30f improve: show informative message in Security tab when auth is disabled
Instead of showing a blank Security tab when authentication is disabled,
now displays a clear explanation of the current state and how to enable auth
2025-08-20 21:57:23 +00:00
Pulse Monitor 688e456e49 improve: enhance threshold tab layout and fix edit behavior
- redesigned global defaults section with compact table layout
- fixed bug where editing without changes created unnecessary overrides
- improved visual consistency across the alerts interface
2025-08-20 20:41:53 +00:00
Pulse Monitor 4bc8cfb1d2 improve: redesign thresholds tab with table layout for better usability
- replaced slider-based UI with clean table layout similar to Guest URLs tab
- shows all resources in a searchable table with inline threshold editing
- added collapsible global defaults section at the top
- enable/disable alerts directly in the table for each guest
- visual indicators for custom overrides
- preserves all existing threshold configurations and overrides
2025-08-20 20:30:33 +00:00
Pulse Monitor 220594b6d3 fix: webhook test button not passing webhookId to backend
addresses #305 - frontend wasn't including webhookId in test requests
2025-08-20 20:04:56 +00:00
Pulse Monitor f553d9cdf8 fix: improve guest URL loading experience
Show loading indicator while fetching saved URLs to prevent empty inputs from briefly appearing
2025-08-20 19:58:44 +00:00
Pulse Monitor 81b2e4800c cleanup: remove unused GuestUrlEditor component and localStorage migration
- Removed unused GuestUrlEditor.tsx component
- Removed localStorage migration code (one-time migration done)
- Guest URLs now fully managed by backend
- Cleaner codebase with no unused components
2025-08-20 19:37:02 +00:00
Pulse Monitor a0c186d63a feat: store guest URLs in backend instead of localStorage
- Guest URLs now stored in backend's guest_metadata.json
- Automatically included in backup/restore operations
- Survives browser data clearing
- Migrates existing localStorage URLs to backend automatically
- Uses existing GuestMetadata infrastructure that was already in place
- Backend API endpoints at /api/guests/metadata
2025-08-20 19:34:10 +00:00
Pulse Monitor 0125f7f665 improve: group guests by node in Guest URLs table
- Matches main dashboard layout with node header rows
- Guests sorted by VMID within each node
- Removed redundant Node column since it's shown in headers
- Better visual organization and consistency
2025-08-20 19:27:18 +00:00
Pulse Monitor 803f4ab759 improve: make Guest URLs table rows more compact
- Reduced padding from py-3 to py-1.5 for data rows
- Reduced header padding from py-3 to py-2
- Input fields now have py-0.5 instead of py-1
- More guests visible without scrolling
2025-08-20 19:25:41 +00:00
Pulse Monitor f987183a53 improve: use separate columns for guest info in URL settings
- Name, Type, VMID, and Node now in separate columns
- Prevents long text from making rows too wide
- Cleaner, more organized table layout
- Matches the style of the main dashboard table
2025-08-20 19:21:49 +00:00
Pulse Monitor 020a9b000b simplify: use single URL field instead of protocol/host/port fields
- Users can now paste complete URLs directly
- Much simpler and more intuitive
- Maintains backward compatibility with old format
- Example: just paste 'https://192.168.1.100:8006'
2025-08-20 19:18:15 +00:00
Pulse Monitor 6c1f389126 refactor: move guest URL management from dashboard to Settings
- Remove inline URL editing from dashboard guest rows
- Create dedicated Guest URLs section in Settings with structured input
- Support protocol (HTTP/HTTPS), host, and port fields separately
- Clean up dashboard by removing unnecessary edit icons
- Guest names remain clickable when URLs are configured
2025-08-20 19:04:42 +00:00
Pulse Monitor 99e3b0ecbb feat: add disable alerts option for individual guests
- Add ability to completely disable alerts for specific guests in Custom Overrides
- Refactor override editing to use single form instead of inline editing
- Add dashboard indicators for guests with custom overrides (blue cog for custom thresholds, grey bell-slash for disabled)
- Remove complex Proxmox tag-based alert control system in favor of simpler UI controls
- Improve layout and UX for alert override management
2025-08-20 18:51:22 +00:00
Pulse Monitor 0dfc7538f0 fix: stop service before updating binary to avoid 'Text file busy' error
Move service stop to happen before attempting to copy the binary file.
This prevents the error when the binary is still in use by the running service.
Added 2-second delay to ensure process fully releases the file.
2025-08-20 16:00:36 +00:00
Pulse Monitor 9a250fb28d improve: handle both pulse and pulse-backend service names gracefully
- ProxmoxVE community script uses pulse-backend.service
- Our install script now detects and preserves existing service name
- Removed pulse-backend.service from pre-v4 detection (it's used by v4 too)
- Install script stops the correct service during upgrades
- New installs use 'pulse', existing use whatever they have

This ensures compatibility with all deployment methods without breaking changes.
2025-08-20 15:57:19 +00:00
Pulse Monitor def119fc58 fix: remove pulse-backend.service from pre-v4 detection
The service name pulse-backend.service is used by both v4 and pre-v4 installations,
so it's not a reliable indicator. Only check for Node.js artifacts (package.json,
node_modules, etc) which are exclusive to pre-v4 versions.
2025-08-20 15:51:56 +00:00
Pulse Monitor 244cffe3fa chore: bump version to v4.5.2-rc.1 2025-08-20 15:34:22 +00:00
Pulse Monitor 645e1dbee7 improve: make quick tip dismissible in alerts tab
- Add dismissible X button to the Quick Tip in Alerts overview
- Persist dismissed state in localStorage
- Tip can be dismissed and won't show again on page refresh
2025-08-20 15:33:24 +00:00
Pulse Monitor 516fb06f90 docs: clarify difference between pulse-no-alerts and pulse-monitor-only
- pulse-no-alerts: completely silent, no alerts generated at all
- pulse-monitor-only: alerts show in UI for manual checking, but no notifications sent
- updated descriptions to make the distinction clearer
- improved use case examples to show when to use each
2025-08-20 14:54:38 +00:00
Pulse Monitor 798fbf6ecf feat: add UI hints about Proxmox tag-based alert control
- added prominent help box in Alerts overview showing available tags
- updated Custom Rules tab to show tags in priority order
- made feature discoverable without reading documentation
- emphasized use cases (dev VMs, TrueNAS, maintenance windows)
2025-08-20 14:51:26 +00:00
Pulse Monitor 5e443816a4 docs: reframe tags as direct VM control for both permanent and temporary use
removed incorrect 'temporary override' framing - users want permanent control for VMs with special needs (TrueNAS, Samba, Frigate, etc). tags are now presented as direct per-VM control that can be used for both permanent configuration and temporary needs

key insight: tags let users say 'this specific VM is special' vs custom rules for patterns
2025-08-20 14:41:34 +00:00
Pulse Monitor 6a71b2c36c refactor: clarify tags as operational overrides complementing custom rules
- updated documentation to clearly distinguish between:
  - Custom Rules: permanent alert policies configured in UI
  - Tags: temporary operational overrides applied in Proxmox
- improved log messages to indicate tags are temporary overrides
- added clear use cases and best practices for each approach
- emphasized that tags complement (not replace) custom rules
2025-08-20 14:37:00 +00:00
Pulse Monitor a04590cc37 fix: make pulse-relaxed tag use fixed thresholds instead of additive
changed pulse-relaxed behavior to override with fixed values (95% CPU/RAM, 98% disk) rather than adding to existing thresholds. this avoids confusing interactions with custom alert rules and provides more predictable behavior

also updated docs to clarify the priority order of tags vs custom rules
2025-08-20 14:16:06 +00:00
Pulse Monitor 889b8a02db docs: add alert suppression using VM/CT tags
documented the new tag-based alert suppression feature that allows controlling alert behavior per VM/container without UI changes. includes pulse-no-alerts, pulse-monitor-only, and pulse-relaxed tags with examples
2025-08-20 14:12:22 +00:00
Pulse Monitor 35bb305b3f fix: show MB/s instead of % for disk I/O alerts
addresses #336 - diskRead/diskWrite/networkIn/networkOut metrics are measured in MB/s not percentages, so alert messages now correctly show "X MB/s" instead of "X%"
2025-08-20 14:09:50 +00:00
Pulse Monitor 6f9d1b1f4f fix: convert CPU values to percentage for alert thresholds
CPU values from Proxmox are decimals (0.99 = 99%) but were being compared
to percentage thresholds (80), causing alerts to never trigger.
2025-08-20 12:06:26 +00:00
Pulse Monitor a0b55f0232 feat: implement alert suppression via VM/CT tags
- pulse-no-alerts: suppress all alerts for VM/CT
- pulse-monitor-only: show alerts in UI but skip email notifications
- pulse-relaxed: use relaxed thresholds (+15% for CPU/memory, +10% for disk)

Tags are read from Proxmox VM/CT configuration and applied during alert checks.
This provides a simple way to manage alert behavior without adding UI complexity.
2025-08-20 11:55:01 +00:00
Pulse Monitor c7213f2528 fix: load version info when DISABLE_AUTH is enabled
- Version was showing 'loading...' when auth was disabled
- Now properly fetches version even when skipping authentication
2025-08-20 10:25:45 +00:00
Pulse Monitor d2dd97c436 chore: bump version to v4.5.1 2025-08-20 10:05:04 +00:00
Pulse Monitor 44d6fe32d6 fix: frontend now properly handles DISABLE_AUTH and skips login screen
- Frontend checks for disabled: true in security status
- When auth is disabled, goes straight to dashboard
- Fixes issue where login screen showed even with DISABLE_AUTH=true
2025-08-20 10:00:05 +00:00
Pulse Monitor a4a5a27002 chore: bump version to v4.5.0 2025-08-20 08:44:47 +00:00
Pulse Monitor b2b6350420 feat: add DISABLE_AUTH environment variable for proxy authentication
- Added DISABLE_AUTH env var to completely bypass authentication
- Useful for reverse proxy setups (Authentik, Authelia, etc.)
- Updated documentation in CONFIGURATION.md and REVERSE_PROXY.md
- Fixed security tests to handle auth disabled state
2025-08-20 08:43:20 +00:00
Pulse Monitor 85f7ecf384 improve: comprehensive type safety improvements across codebase
Frontend (TypeScript):
- Eliminated all 'any' types (7 → 0)
- Added proper types for event system with generics
- Fixed event data interfaces with specific types
- Replaced any with unknown where appropriate

Backend (Go):
- Created central types.go with 30+ typed API structures
- Eliminated all interface{} in /internal/api package (158 → 0)
- Replaced map[string]interface{} with typed structs:
  - ChartResponse, VMChartData, NodeChartData, StorageChartData
  - DiagnosticsInfo with NodeDetails, ClusterInfo, PBSDetails
  - StorageChartsResponse with StorageMetrics
- Improved compile-time type safety for all API responses

Benefits:
- Better IDE support and autocomplete
- Compile-time error detection
- Clearer API contracts
- Improved maintainability

All tests passing, service running successfully with typed code.
2025-08-19 21:32:44 +00:00
Pulse Monitor 26ffd5003c chore: bump version to v4.5.0-rc.4 and add comprehensive test suite
- Added test-release.sh for core functionality testing
- Added test-edge-cases.sh for URL and header edge cases
- Added test-proxy-scenarios.sh for reverse proxy testing
- Added test-security.sh for security vulnerability testing
- Added test-installation-methods.sh for deployment validation
- Added test-all.sh master script to run all tests
- These tests would have caught issue #334 and prevent similar issues
2025-08-19 19:34:54 +00:00