Commit Graph

641 Commits

Author SHA1 Message Date
Pulse Monitor 5d99d2c3bd fix: correct misleading PVE 9 VM disk monitoring message (addresses #348)
The setup script was incorrectly claiming that VM disk monitoring works
on Proxmox 9 with API tokens. This is not true due to an upstream
Proxmox limitation where API tokens cannot access guest agent data
even with the correct permissions.

Updated the setup script to clearly explain:
- This is a known Proxmox 9 limitation, not a Pulse issue
- API tokens are blocked from accessing get-fsinfo
- Available workarounds (use root@pam or wait for upstream fix)
- Link to issue #348 for full context

This should prevent further confusion for users running Proxmox 9.
2025-08-26 22:58:21 +00:00
Pulse Monitor 748c1e92c1 feat: improve UI consistency with refined styling
- Reduced text sizes across all tables for better information density
  - Guest names now use text-sm for better readability
  - Node names in summary tables use smaller text-[11px]
  - All table text sizes are now consistent

- Unified table header styling with compromise design
  - Subtle bg-gray-50 dark:bg-gray-700/50 background
  - Consistent px-2 py-1.5 padding for comfortable spacing
  - text-[11px] sm:text-xs responsive sizing
  - Softer border-gray-200 dark:border-gray-600 borders

- Updated Storage tab progress bars to match Dashboard style
  - Increased height from h-2.5 to h-3.5
  - Simplified color thresholds (green/yellow/red)
  - Consistent text formatting with Dashboard

Applied consistently across Dashboard, Storage, Backups tabs and all node tables for a cohesive look
2025-08-26 22:45:55 +00:00
Pulse Monitor 8e5b7db949 feat: implement comprehensive alert system for PBS and storage resources
- Add PBS alert monitoring (CPU, memory, offline detection)
- Add storage offline detection with proper cluster awareness
- Remove bulk toggle feature from thresholds UI (unnecessary complexity)
- Add enable/disable buttons for PBS servers in thresholds tab
- Fix storage offline detection to avoid false positives in clusters
  (only alert on truly offline storage, not inactive cluster storage)

Alert improvements:
- PBS instances now properly monitored like nodes
- Storage devices generate offline alerts with confirmation system
- All resource types support custom thresholds and disable toggles
- Consistent alert ID format across all resource types
- Proper hysteresis and confirmation counts to prevent flapping

addresses #123 (if there was an issue about missing PBS alerts)
2025-08-26 20:46:58 +00:00
Pulse Monitor a563ad26cd fix: hide scrollbars on all tables throughout the UI
- ScrollableTable component (used by Guest table)
- Storage table
- Backups table (both main and PBS sections)
- ResourceTable (Alerts)
- GuestURLs table (Settings)
- All tables still scroll but without visible scrollbars
- Works across all browsers (Chrome, Firefox, Safari, Edge)
2025-08-26 19:47:38 +00:00
Pulse Monitor 9b1c383759 fix: hide scrollbars on node tables
- Add scrollbar-width: none for Firefox
- Add -ms-overflow-style: none for IE/Edge
- Add ::-webkit-scrollbar { display: none } for Chrome/Safari
- Tables still scroll horizontally but without visible scrollbars
2025-08-26 19:42:51 +00:00
Pulse Monitor 215172987e fix: use min-width instead of fixed table layout
- Remove table-layout: fixed which was causing issues
- Use min-width on columns instead of width
- Tables use w-full class to take available space
- Should eliminate dead space on the right
2025-08-26 19:39:47 +00:00
Pulse Monitor 2ea75caa2f fix: use 100% table width with fixed layout to eliminate dead space
- Tables now use 100% width with table-layout: fixed
- Last column (Uptime) no longer has fixed width, takes remaining space
- Eliminates dead space while maintaining fixed column sizes
- Tables still have min-width to prevent collapse
2025-08-26 19:36:37 +00:00
Pulse Monitor 3fad29875b fix: remove dead space from node tables
- Calculate PVE table width dynamically based on column count
- Reduce PBS table width from 1100px to 1000px to match columns
- Eliminates unnecessary whitespace on the right side
2025-08-26 19:33:39 +00:00
Pulse Monitor 3f760d9762 fix: actually fix table layout in PVE and PBS node tables
- Fixed the correct components (PVENodeTable and PBSNodeTable)
- Use inline styles for table-layout: fixed and width: 1100px
- Set explicit column widths with inline styles
- Add white-space: nowrap to prevent text wrapping
- Tables now properly scroll horizontally on narrow screens
2025-08-26 19:31:11 +00:00
Pulse Monitor c228ab44a8 fix: force fixed table layout with inline styles
- Use inline style attributes instead of Tailwind classes
- Set table-layout: fixed and width: 1000px directly
- Force white-space: nowrap with inline styles
- Set explicit column widths with style attributes
- Ensures table doesn't collapse on narrow screens
2025-08-26 19:19:59 +00:00
Pulse Monitor 38fc315e56 fix: prevent column collapse and text wrapping in Node Summary Table
- Use table-fixed layout with explicit 1000px width
- Set explicit column widths for all columns
- Add whitespace-nowrap to flex containers to prevent wrapping
- Ensure progress bars maintain 200px width on all screen sizes
- Table now scrolls horizontally on narrow viewports instead of collapsing
2025-08-26 19:17:07 +00:00
Pulse Monitor 06356fdb93 fix: properly set fixed widths and prevent text wrapping in Node Summary Table
- Set table minimum width to 1000px for proper layout
- Use fixed w-[200px] instead of min-w for MetricBar columns
- Changed MetricBar text from truncate to whitespace-nowrap
- Added min-width to node name column
- Ensures consistent column widths and no text wrapping
2025-08-26 19:12:34 +00:00
Pulse Monitor 6e64793d06 fix: prevent text wrapping and maintain fixed widths in Node Summary Table
- Added min-width to table (900px) to ensure proper horizontal scrolling
- Added whitespace-nowrap to all headers and badges to prevent wrapping
- Changed MetricBar columns from w-[180px] to min-w-[180px] for fixed minimum width
- Ensures progress bars stay readable and don't shrink on narrow screens
- Smooth horizontal scrolling on mobile/narrow viewports
2025-08-26 19:09:32 +00:00
Pulse Monitor bb0936c176 style: converge table styling across Guest, Storage, and Backups tables
- Updated all tables to match Node Summary Table's cleaner aesthetic
- Consistent rounded corners, shadows, and border styling
- Cleaner header rows with gray-500 text and no background colors
- Added row dividers using divide-y for better visual separation
- Made node group headers more subtle with 50% opacity backgrounds
- Kept row heights compact with py-0.5 padding
- Improved overall visual consistency across the UI
2025-08-26 18:25:40 +00:00
Pulse Monitor 97efcc5c1c feat: enhance PBS namespace filtering and display
- Add expandable namespace rows to PBS instances table
- Show deduplication factor from PBS GC status (calculated from index-data-bytes/disk-bytes)
- Move deduplication display to bottom left of backup frequency chart
- Add namespace highlighting when filtered (blue background, filtering indicator)
- Fix backup frequency chart to properly handle PBS namespace filters
- Allow clicking namespace again to clear filter (toggle behavior)
- Improve visual feedback for selected namespaces with color changes
2025-08-26 18:03:07 +00:00
Pulse Monitor 907878c73c fix: remove PBS deduplication display as it's not available in PBS API
PBS doesn't expose deduplication factor in its standard datastore status endpoint
Would require garbage collection stats or chunk store data to calculate properly
2025-08-26 17:02:13 +00:00
Pulse Monitor 74ef032eaf feat: add expandable namespace rows to PBS instances table
- PBS instances with datastores/namespaces now have expand/collapse buttons
- expanded view shows hierarchical structure: instance > datastore > namespace
- clicking a namespace filters the backup list to that specific namespace
- displays datastore storage usage and deduplication factor when available
- namespace filter format: pbs:instanceName:datastoreName:namespace
2025-08-26 16:57:36 +00:00
Pulse Monitor 9bbf6757e3 feat: add PBS deduplication factor display to backup frequency chart
- capture deduplication_factor from PBS API datastore status endpoint
- display average deduplication ratio in backup frequency chart header
- shows as green 'Deduplication: X.X:1' when PBS datastores provide this data
2025-08-26 16:50:50 +00:00
Pulse Monitor 06a3e6b570 cleanup: remove non-functional UI elements
- Removed All/VM Disks/CT Volumes filter buttons from Storage tab that weren't functional
- Removed PBS badge next to PBS instance names in Backups tab (redundant since it's already in PBS table)
2025-08-26 16:39:52 +00:00
Pulse Monitor d0e67db004 feat: add hover animations to node summary tables
- Added subtle scale effect (1.01x) on row hover
- Added shadow and left border indicator on hover
- Smooth 150ms transitions for all animations
- Visual feedback makes it clear rows are clickable
- Applied to both PVE and PBS node tables
2025-08-26 16:30:35 +00:00
Pulse Monitor 34b3ccdab7 fix: node summary tables now appear on initial page load
- Fixed reactivity issue where PVE node tables weren't showing on hard refresh
- Removed component re-mounting caused by IIFE wrapper in App.tsx
- Added text truncation with ellipsis to prevent row height changes
- Fixed table visibility to properly hide when filtering excludes all nodes
- Added cache-busting headers to ensure browser loads latest JS/CSS files
2025-08-26 16:27:19 +00:00
Pulse Monitor a1c0f14f34 fix: improve PVE node filtering logic for backups tab search
- When searching shows local/snapshot backups, only display nodes with those specific backups
- PBS/remote backups are shared across nodes, so they alone shouldn't show all nodes
- If search only returns PBS backups, then show nodes with access to them
- Prevents all nodes from showing when searching for a guest that only exists on one node
2025-08-26 11:42:39 +00:00
Pulse Monitor e0345cefc9 fix: add snapshots filter and correct backup type colors in Backups tab
- Added Snapshots filter button (was missing)
- Fixed colors to match backup badges:
  - Snapshots: yellow
  - PVE: orange
  - PBS: purple
- Improved PBS table filtering logic to properly show when PBS backups exist
- PBS table now correctly identifies remote backups even with generic 'PBS' node names
2025-08-26 11:39:07 +00:00
Pulse Monitor 1a177a19fe fix: properly hide PVE/PBS node tables when search filters out all their items
- PVE node table now only shows nodes with actual PVE backups (not PBS)
- PBS node table filters based on PBS-specific backups
- Tables correctly hide entirely when no matching nodes after filtering
- Fixes issue where PVE header remained visible with PBS-only search results
2025-08-26 11:35:59 +00:00
Pulse Monitor fd768c6eb1 feat: extend search filtering to Storage and Backups tabs
- Node tables now dynamically update based on search in all tabs
- Storage tab filters nodes to show only those with matching storage
- Backups tab filters nodes to show only those with matching backups
- Counts update to reflect filtered items in each tab
- Consistent search experience across Dashboard, Storage, and Backups
2025-08-26 11:32:37 +00:00
Pulse Monitor ef95e9d717 fix: only show matched count in node table when there's an actual search term 2025-08-26 11:26:58 +00:00
Pulse Monitor 511f5b60a4 fix: correct node filtering logic to properly detect when filtered guests are provided 2025-08-26 11:22:53 +00:00
Pulse Monitor 063cd670a6 feat: improve filter UX with full-width search fields and dynamic node summary filtering
- Remove max-width constraint on search fields to utilize available space
- Node summary table now updates based on search/filter criteria
- Only show nodes with matching guests when filtering is active
- Calculate node metrics based on filtered guests only
- Show matched guest count in node summary when filtering
- Provides better visual feedback on what the filters are affecting
2025-08-26 11:18:44 +00:00
Pulse Monitor 6988c2b0c8 feat: add mock data system for UI testing (partial integration)
- Created comprehensive mock data generator for nodes, VMs, containers
- Added toggle scripts for easy switching between real and mock mode
- Integrated with backend-watch.sh for auto-rebuild with mock support
- Modified monitor to skip polling when mock mode is enabled
- Added CLAUDE.md documentation for future sessions

Note: Mock system initializes but data isn't fully integrated with GetState() yet.
Currently shows mixed real + mock data. Works for UI testing purposes.
2025-08-26 07:56:15 +00:00
Pulse Monitor 2234fb57ce fix: enable node click filtering for any number of nodes
addresses #356 - node click filtering now works with:
- 1-4 nodes (regular cards - already worked)
- 5-9 nodes (compact cards - now fixed)
- 10+ nodes (ultra-compact list - now fixed)

clicking any node box filters VMs to that node only, regardless of how many nodes are displayed
2025-08-25 21:50:47 +00:00
Pulse Monitor aa3044d487 feat: add dual authentication for setup scripts
- Setup scripts now accept both temporary setup codes and permanent API tokens
- Setup codes (6 chars): For manual setup by others, expire in 5 minutes
- API tokens: For automation and trusted environments, no expiration
- Modified auto-registration endpoint to accept API tokens directly
- Fixed JSON escaping issues with exclamation marks in bash scripts
- Updated README with clear documentation of both authentication methods
- Discovery modal now shows cached results immediately while scanning

This enables both secure manual setup (via temporary codes) and reliable
automation (via API tokens) without compromising security.
2025-08-25 21:47:48 +00:00
Pulse Monitor c9f7ad6487 fix: discovery endpoint now properly handles both GET and POST requests
The discovery functionality was broken because the router was using a
simple GET-only handler instead of the complete HandleDiscoverServers
function that supports both GET (cached results) and POST (manual scans
with subnet parameters).

Changes:
- Updated router to use configHandlers.HandleDiscoverServers instead of r.handleDiscovery
- Removed the redundant handleDiscovery function
- Discovery endpoint now supports both GET and POST methods as expected by frontend
- Added proper authentication requirement for discovery endpoint

This addresses the discovery being broken in the latest RC releases.
2025-08-25 16:37:22 +00:00
Pulse Monitor 6ac9c2797c chore: bump version to v4.9.0-rc.1 2025-08-25 15:44:42 +00:00
Pulse Monitor 8dde3172ce feat: add comprehensive VM disk monitoring diagnostics
Added detailed VM disk monitoring checks to the diagnostics page:
- Tests actual guest agent connectivity for each node
- Shows how many VMs have agents configured vs working
- Performs a detailed test on one VM and reports the result
- Provides specific recommendations based on the error encountered
- Shows SUCCESS when disk monitoring is working properly

This helps users quickly identify why VM disk monitoring might not be working:
- Guest agent not installed/running
- Permission issues with API tokens
- VM configuration problems

The diagnostics clearly show when everything is working (like the delly.lan cluster showing 19.3% disk usage) vs when there are issues to resolve.
2025-08-25 15:34:05 +00:00
Pulse Monitor da745b0d88 fix: correct VM disk monitoring documentation for PVE 9
TESTED AND CONFIRMED: API tokens CAN access guest agent data on PVE 9!
- Created test tokens and verified they work
- Guest agent API returns proper disk usage data
- The cluster/resources endpoint shows disk=0 but that's not what Pulse uses
- Pulse correctly fetches data via /nodes/{node}/qemu/{vmid}/agent/get-fsinfo

The misinformation about PVE 9 not working was completely wrong. It does work when properly configured with PVEAuditor role which includes VM.GuestAgent.Audit permission.
2025-08-25 15:25:10 +00:00
Pulse Monitor 35cecd475a docs: provide honest assessment of PVE 9 VM disk monitoring
Stop making definitive claims about what works or doesn't work. The reality:
- Some users (like you) have it working fine in cluster configs
- Others report 0% disk usage
- The exact conditions that make it work are unclear
- Results vary between different setups

Updated all docs and messages to reflect this uncertainty rather than making false claims about non-existent workarounds or absolute limitations.
2025-08-25 15:20:34 +00:00
Pulse Monitor 6f86ad5b7f fix: correct the misinformation about PVE 9 VM disk monitoring
Previous advice was completely wrong. The facts:
- VM.Monitor permission doesn't exist in PVE 9 (was removed)
- It was replaced with VM.GuestAgent.Audit
- But even with correct permissions, API tokens CANNOT access guest agent data on PVE 9
- This is Proxmox bug #1373 with NO working workaround for API tokens
- Users must accept 0% VM disk usage on PVE 9 until Proxmox fixes it upstream

Updated all documentation and error messages to reflect this reality instead of giving false hope about non-existent workarounds.
2025-08-25 15:04:41 +00:00
Pulse Monitor 6fd96d7bed fix: remove misleading root@pam authentication advice
The root@pam suggestion doesn't actually work since it requires the Linux system root password, not a Proxmox-specific password. Most users don't know or have disabled their Linux root password for security.

Updated all documentation and error messages to correctly advise users to grant VM.Monitor permission to their API token user instead.
2025-08-25 14:59:37 +00:00
Pulse Monitor fb59ad8591 fix: implement batch toggle operations to prevent state sync issues
addresses #349 - fixed the issue where toggling all Proxmox Node alerts would skip some nodes on subsequent clicks. The problem was that multiple toggle operations in a loop were reading from the same state snapshot.

- implemented batchToggleNodeConnectivity and batchToggleDisabled functions
- these functions collect all changes and apply them atomically
- ensures all resources are properly toggled to the target state
- fixes the issue where individual nodes (like 'pi') weren't toggling correctly
2025-08-25 14:41:26 +00:00
Pulse Monitor eeffb11478 fix: correct batch toggle logic for Proxmox Nodes alerts
fixed issue where toggling all alerts for Proxmox Nodes would skip some nodes on the second click. The logic now properly checks each node's current state and only toggles those that need to change to reach the target state.
2025-08-25 14:33:41 +00:00
Pulse Monitor 3ead28bc4f feat: add batch toggle for alerts in Thresholds tab
addresses #349 - adds a toggle button in the Alerts column header that allows users to enable/disable all alerts for a resource type with one click. This is especially helpful when managing many VMs, containers, or storage devices.

- added toggle icon in Alerts column header for VMs & Containers, Storage, and Nodes tables
- icon shows current state (eye for enabled, eye-slash for disabled)
- clicking toggles all resources in that table between enabled/disabled
- for nodes, toggles connectivity alerts instead of general disable flag
2025-08-25 14:29:35 +00:00
Pulse Monitor 7592c95021 fix: prevent duplicate node names in alert IDs for single-node setups
When the instance name equals the node name (common in single-node setups),
avoid generating redundant IDs like "pve-pve-100" by using just "pve-100".
This fixes alert acknowledgment issues where the UI couldn't match alert
IDs due to the duplicate node name pattern.

Addresses #353
2025-08-25 14:11:58 +00:00
Pulse Monitor f34c9d689d feat: add --reset and --uninstall options to install script
The install script now provides convenient management options:
- --reset: Stops Pulse, removes config/data, restarts with fresh config
- --uninstall: Completely removes Pulse from the system

Also simplified the post-install message to show these one-liner commands instead of listing manual steps.
2025-08-25 14:01:59 +00:00
Pulse Monitor a2a72e806a fix: install script no longer crashes when comparing RC versions
The version comparison function was attempting numeric comparisons on version parts containing RC suffixes (e.g., "0-rc" from "4.8.0-rc.2"), causing an "unbound variable" error due to set -u.

Now properly strips and handles pre-release suffixes separately, allowing correct comparison of RC versions.

Addresses discussion #344 comment from RLSinRFV
2025-08-25 13:55:17 +00:00
Pulse Monitor 47f8da8782 security: comprehensive security improvements
- Add authentication requirement to diagnostics endpoint
- Implement persistent session storage to survive restarts
- Strengthen recovery mechanism with cryptographic tokens
- Add consistent rate limiting across all API endpoints
- Implement persistent CSRF token storage
- Tighten WebSocket origin validation with proper IP checks
- Remove sensitive data exposure from diagnostics

addresses multiple security audit findings
2025-08-25 11:28:55 +00:00
Pulse Monitor 3ad51a43d8 fix: remove redundant setup code display when token is embedded in URL
The setup code section in the modal is no longer shown when the auth token
is already embedded in the setup script URL. Since the token is included
as auth_token parameter, there's no need for users to see or enter it.
2025-08-25 09:40:45 +00:00
Pulse Monitor 369004ea28 improve: add reset and removal instructions to install script completion message
Users now see clear instructions for:
- Resetting configuration to start fresh (keeping Pulse installed)
- Complete removal of Pulse (uninstall everything)

This helps users who need to troubleshoot or start over with a clean slate.
2025-08-25 09:36:39 +00:00
Pulse Monitor 48c1349404 chore: bump version to v4.8.0-rc.2 2025-08-25 09:17:57 +00:00
Pulse Monitor 4f73d368ef docs: add troubleshooting for root@pam users still seeing 0% disk usage 2025-08-25 09:14:21 +00:00
Pulse Monitor 9dea067521 improve: add better diagnostics for guest agent issues
- Add verification steps for qemu-guest-agent service status
- Clarify that the service is socket-activated (not systemctl enable)
- Add diagnostic commands users can run to verify agent is working
- Update FAQ with correct troubleshooting steps for agent issues

This helps users like @RLSinRFV who were trying to enable the service
when it's actually socket-activated and should start automatically.
2025-08-25 09:12:25 +00:00