Commit Graph

1009 Commits

Author SHA1 Message Date
Pulse Monitor 43b634f654 improve: add --main as primary option for building from source
- --main is now the primary option (clearer intent)
- --source, --from-source, --branch remain as aliases
- Help text shows --main first for better discoverability

Usage: curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash -s -- --main
2025-09-11 15:16:40 +00:00
Pulse Monitor ac3e1eaacb feat: add --source option to install script for building from source
- Added --source, --from-source, and --branch options (all equivalent)
- Allows building and installing Pulse from source code
- Optional branch parameter (defaults to main)
- Builds frontend and backend locally before installing
- Removes separate install-from-main.sh script - integrated into main script

Usage:
  curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash -s -- --source
  curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash -s -- --source develop
2025-09-11 15:15:27 +00:00
Pulse Monitor 26a6c2fa76 feat: add script to install Pulse from main branch source
Allows users to test latest changes without waiting for a release.
Usage: curl -sSL https://raw.githubusercontent.com/rcourtman/Pulse/main/scripts/install-from-main.sh | sudo bash
2025-09-11 15:10:56 +00:00
Pulse Monitor 3e87a54712 test: create test version for issue #448 2025-09-11 15:01:23 +00:00
Pulse Monitor 07a83bb1ff fix: preserve storage data when node times out (addresses #448)
When a node's storage query times out, don't return empty storage which would wipe out existing data. Instead, skip the node entirely so the preservation logic can maintain the existing storage information.
2025-09-11 14:55:50 +00:00
Pulse Monitor 9a31dd32b6 chore: bump version to v4.15.0-rc.7 2025-09-11 14:19:58 +00:00
Pulse Monitor 082383a4dc fix: increase storage API timeout from 15s to 30s (addresses #448)
The 15-second timeout introduced to handle unavailable NFS storage was too aggressive and caused legitimate storage queries to timeout on nodes with many storage backends or higher latency. This was causing storage to not be displayed for affected nodes.

Increased timeout to 30 seconds as a better balance between responsiveness and reliability.
2025-09-11 14:19:21 +00:00
Pulse Monitor ba4eb34e4f chore: bump version to v4.15.0-rc.6 2025-09-11 14:02:05 +00:00
Pulse Monitor a971f8072c improve: enhance diagnostics export with critical troubleshooting data
- include backend diagnostics data when available
- add node online/offline status (critical for storage issues)
- include physical disks data (addresses missing disks issue)
- add ZFS pool health information
- include alert configuration (helps debug threshold save issues)
- add recent errors and connection health
- show Pulse version information
- prompt user to run diagnostics first for comprehensive data
- helps troubleshoot issues like #448 more effectively
2025-09-11 13:56:15 +00:00
Pulse Monitor e8f46e512c fix: correct diagnostics export location in issue template
- fix incorrect instructions about diagnostics location
- it's actually in Settings → Diagnostics tab → Export for GitHub
- not 'Download Diagnostics' or 'scroll to bottom'
2025-09-11 13:52:38 +00:00
Pulse Monitor f1c9943d8e improve: simplify issue templates to be less prescriptive
- make bug report template more concise and flexible
- remove overly detailed instructions
- add helpful tip about diagnostics export for troubleshooting issues
- keep templates simple so they don't restrict users
2025-09-11 13:51:50 +00:00
Pulse Monitor 24cce62669 docs: add GitHub issue templates with diagnostics export instructions
- add bug report template with instructions for attaching diagnostics
- add feature request template
- mention the 'Export for GitHub' option which provides sanitized diagnostics
- helps users provide better information when reporting issues
2025-09-11 13:51:11 +00:00
Pulse Monitor 594cf66c9f simplify: remove complex override matching logic in favor of consistent ID generation
Removed the flexible ID matching code that was added for backward compatibility. Since we've fixed the frontend to generate IDs consistently with the backend, we don't need the complexity of trying multiple ID formats.

This keeps the codebase simpler and more maintainable.
2025-09-11 13:34:03 +00:00
Pulse Monitor 455d0a2ee2 fix: standardize guest ID generation between frontend and backend to prevent future mismatches
The frontend was using guest.name while the backend uses guest.node in the ID pattern. This caused mismatches when saving and loading alert overrides.

Changed frontend ID fallback from:
  instance-name-vmid
To match backend:
  instance-node-vmid

This ensures consistent ID generation across the application.
2025-09-11 13:30:53 +00:00
Pulse Monitor 5a602c1285 fix: improve alert override ID matching to handle various frontend ID formats (addresses #441)
The frontend can save alert overrides with different ID formats depending on how the cluster is configured. This fix makes the backend more flexible in matching these overrides by:

1. Trying the exact guest ID first
2. Checking for partial matches that end with -node-vmid
3. Trying alternative ID formats like node-vmid and instance-node-vmid

This ensures custom alert thresholds work correctly regardless of the cluster name format used when saving overrides.
2025-09-11 13:25:51 +00:00
Pulse Monitor 7856598a45 fix: allow entering 0 or -1 to disable specific alert thresholds (addresses #434)
- Changed min value from 0 to -1 on all threshold input fields
- Updated formatMetricValue to show 'Off' for disabled thresholds
- Added help text explaining that 0 or -1 disables alerts
- Backend already supports threshold.Trigger <= 0 check
2025-09-11 13:12:30 +00:00
Pulse Monitor 2e214f31ce improve: use efficient cluster/resources endpoint for all nodes
- Always try cluster/resources endpoint first (works on standalone nodes too)
- Only fall back to traditional polling for very old Proxmox versions
- Confirmed working on standalone nodes like pimox
- Significantly reduces API calls and improves performance
- Addresses efficiency concerns from #447
2025-09-11 12:57:32 +00:00
Pulse Monitor 93fbd81f78 cleanup: remove legacy POLLING_INTERVAL env variable (addresses #447)
PVE polling is hardcoded to 10s since Proxmox cluster/resources endpoint only updates every 10s internally. Setting faster polling intervals was wasteful and provided no benefit.

Removed:
- POLLING_INTERVAL env variable and all references
- pollingInterval from config structs and API responses
- UI settings for polling interval (already removed)
- Dynamic polling interval updates via SIGHUP
- Legacy persistence code for saving polling settings

The monitoring loop now uses a hardcoded 10s interval matching Proxmox's update frequency.
2025-09-11 12:33:44 +00:00
Pulse Monitor 693b8c510e fix: handle trailing slashes in node URLs (addresses #428)
Strip trailing slashes and paths from URLs before parsing host:port
to prevent "invalid port number" errors when users add nodes with
URLs like https://192.168.xxx.xxx:8006/
2025-09-11 12:27:24 +00:00
Pulse Monitor e7468ee8ee fix: correct mock generator guest ID format to match alert system (addresses #441)
Mock VMs and containers were using 'node:qemu/vmid' format but the alert
system expects 'instance-node-vmid' format. This caused custom thresholds
to be ignored for mock guests.
2025-09-11 12:05:55 +00:00
Pulse Monitor 4b76667701 cleanup: remove inaccurate storage allocation features
removed expandable rows showing VM/container allocations since the API doesn't provide accurate VM-to-storage mapping. kept the filesystem type column for physical disks as that's useful information that is accurately provided.
2025-09-11 11:47:54 +00:00
Pulse Monitor c7bdf415c7 chore: bump version to v4.15.0-rc.5 2025-09-11 09:02:23 +00:00
Pulse Monitor 2d2d63608d Revert "improve: clarify disk column header to show it represents used space (addresses #446)"
This reverts commit de6051a7d7.
2025-09-11 08:56:49 +00:00
Pulse Monitor de6051a7d7 improve: clarify disk column header to show it represents used space (addresses #446) 2025-09-11 08:56:03 +00:00
Pulse Monitor 308e96db37 improve: enhance VM disk usage detection for Windows guests (addresses #416)
- Add debug logging to guest agent filesystem API responses
- Better handle Windows drive mountpoints (C:\, D:\, etc.)
- Improve empty filesystem list detection and logging
- Add specific handling for Windows filesystems that may report differently

This should help diagnose why some VMs with guest agents installed still show 0% or missing disk usage, particularly on Windows systems.
2025-09-11 08:47:23 +00:00
Pulse Monitor 36f3717777 revert: version back to 4.15.0-rc.4 2025-09-11 07:36:48 +00:00
Pulse Monitor bbc6b89086 chore: bump version to v4.15.0-rc.5 2025-09-11 07:33:12 +00:00
Pulse Monitor 49e9543fd4 feat: add physical disk diagnostics to help troubleshoot missing disks (addresses #429)
- Add comprehensive disk detection diagnostics to /api/diagnostics
- Shows which nodes return disks and which don't
- Provides specific error messages and API responses
- Includes targeted recommendations based on failure type
- Helps users provide better debugging info when reporting issues
2025-09-11 07:28:15 +00:00
Pulse Monitor 41effe56ef improve: enhance disk polling error logging to help diagnose missing disks (addresses #429)
- Add specific warning for permission errors (401/403)
- Add info message for nodes without disk monitoring support
- Elevate error logging from debug to warn level for visibility
- Helps users understand why disks might not appear for certain nodes
2025-09-11 07:20:17 +00:00
Pulse Monitor f57b440042 fix: remove debug code that bypassed authentication in Docker builds (addresses #428)
Debug code was accidentally left in v4.15.0-rc.3 that skipped authentication
entirely, preventing the login screen from appearing. This affected Docker
deployments where authentication was expected.

- Removed early return that bypassed auth checks
- Restored proper isLoading initial state
- Removed WebSocket early initialization
- Cleaned up debug console.log statements
2025-09-11 07:12:24 +00:00
Pulse Monitor 3081955cff fix: update Dockerfile to use Go 1.24 for compatibility 2025-09-10 21:43:35 +00:00
Pulse Monitor c22103afac chore: bump version to v4.15.0-rc.4 2025-09-10 21:38:46 +00:00
Pulse Monitor 6e9cc27ae1 fix: improve WebSocket connection reliability in dev environment
- Increase WebSocket buffer sizes from 64KB to 4MB to handle large mock data
- Add robust reconnection logic with exponential backoff
- Implement heartbeat mechanism to detect stale connections faster
- Add manual reconnect button in UI when connection fails
- Fix unused variable warnings in monitor code
- Add debug logging to trace WebSocket state initialization

This resolves the issue where the frontend would hang after code changes
during hot-reload, especially when using mock mode with many nodes.
2025-09-10 21:35:20 +00:00
Pulse Monitor 6b62bc64ee fix: preserve storage/backup data for temporarily offline nodes (addresses #429)
- Storage polling now preserves existing data when nodes are temporarily offline
- Backup polling preserves existing backups for unpolled nodes
- Prevents storage and backups from disappearing when nodes have connectivity issues
- Similar to the physical disk preservation fix
2025-09-10 20:59:46 +00:00
Pulse Monitor ae6cf5c22f fix: preserve config files during reinstalls to prevent threshold loss (addresses #429)
- Modified install.sh to avoid recursive chown on /etc/pulse during reinstalls
- This prevents custom thresholds in alerts.json from being lost during updates
- Only changes directory ownership, not existing file permissions
- Explicitly preserves permissions on critical config files
2025-09-10 20:54:07 +00:00
Pulse Monitor d7afe4372f fix: preserve physical disk data for temporarily offline nodes (addresses #429)
When a node is temporarily offline or has connectivity issues, preserve its last known physical disk data instead of removing it from the table. This prevents nodes from disappearing from the Physical Disks table when they have transient connection problems.
2025-09-10 20:44:51 +00:00
Pulse Monitor 3189eecde3 chore: remove debug console logs from PBS threshold fix 2025-09-10 20:23:29 +00:00
Pulse Monitor 6cf3c053a4 fix: resolve PBS threshold save issues and input focus loss (addresses #440)
- Added 'pbs' type to Override interfaces in both Alerts.tsx and ThresholdsTable.tsx
- Fixed createEffect in Alerts.tsx to properly handle PBS server overrides
- Prevented memos from recomputing during editing to avoid input focus loss
- PBS threshold values now persist correctly when saved
2025-09-10 20:20:38 +00:00
Pulse Monitor b2429dbd8f fix: update dependencies to address GitHub security alerts
- Update Vite to fix middleware file serving vulnerability
- Update golang.org/x/crypto to v0.42.0 for latest security patches
2025-09-10 19:52:00 +00:00
Pulse Monitor 7903fa9bdc fix: show correct default alert delays when no config exists
Don't override the default per-type delays (10, 15, 30, 30) with zeros when the legacy timeThreshold is 0 or undefined.
2025-09-10 19:49:00 +00:00
Pulse Monitor db8bc7aaa3 feat: implement per-resource-type alert delays
- VMs/Containers default to 10 seconds
- Nodes default to 15 seconds
- Storage defaults to 30 seconds
- PBS servers default to 30 seconds

This allows more appropriate delays for different resource types instead of a single global delay that doesn't fit all use cases. Storage and PBS can have longer delays since they're less critical and more prone to transient spikes during operations.
2025-09-10 19:45:42 +00:00
Pulse Monitor a043a84dc0 fix: make global default thresholds section always visible (addresses #433)
The collapsible chevron icon was confusing users who didn't realize they needed to expand the section to see the alert delay and threshold settings. Now the global defaults are always visible.
2025-09-10 19:27:47 +00:00
Pulse Monitor 09703168cd fix: restore cross-device theme sync while preserving local persistence (addresses #443)
- localStorage preference has priority for persistence across reloads
- Server preference used only when no local preference exists (first visit)
- WebSocket broadcasts still sync theme changes across devices/tabs
- Maintains the cool real-time sync feature while fixing persistence issue
2025-09-10 18:49:55 +00:00
Pulse Monitor 8ed19f403f fix: ensure dark mode preference persists across page reloads (addresses #443)
- localStorage preference now takes priority over server settings
- Server no longer overrides local theme choice on page reload
- Theme still syncs to server when toggled for cross-device support
- Fixes issue where dark mode would reset to light after refresh
2025-09-10 18:46:41 +00:00
Pulse Monitor 338ce62ab9 fix: remove incorrect 100% threshold disabling logic
The 100% threshold disabling feature was incorrectly implemented and doesn't
make logical sense - metrics can legitimately reach 100% (CPU, memory, storage)
and those are critical conditions that should trigger alerts.

The correct way to disable specific alerts is already implemented:
- Set threshold to 0 or negative to disable a metric type globally
- Use per-resource overrides to disable specific metrics for specific resources
- Example: Overrides[guest-id].Memory = {Trigger: 0} disables memory alerts for that guest

This removes the confusing behavior where 100% thresholds would disable alerts
instead of alerting on actual 100% usage conditions.
2025-09-10 18:38:31 +00:00
Pulse Monitor b19509a5c7 fix: dark mode not persisting on page reload (addresses #443)
The dark mode state is now initialized immediately from localStorage when
the app loads, preventing the flash of light mode. Previously, dark mode
was always initialized as false and only set correctly after authentication
checks completed, causing it to briefly show light mode on every reload.

Also removed redundant theme application code throughout the authentication
flow since the theme is now correctly set on initialization.
2025-09-10 17:23:40 +00:00
Pulse Monitor c7a865e12c fix: storage threshold overrides not being applied (addresses #441, #434)
Two critical issues fixed:
1. Storage threshold overrides were being loaded but never applied - the code
   always used the default threshold instead of checking for overrides
2. Setting a threshold to 100% now properly disables alerts for that metric,
   allowing users to suppress specific alerts they don't want

This fixes both the storage threshold persistence issue and the inability
to disable alerts by setting thresholds to 100%.
2025-09-10 17:20:01 +00:00
Pulse Monitor d5331e1e2e fix: improve PBS alert threshold persistence when updating nodes (addresses #440)
The issue was that PBS monitoring uses name-based IDs (pbs-<name>) while
the config system uses index-based IDs (pbs-0, pbs-1). When updating PBS
node configuration, the alert overrides were already being preserved but
the ID mismatch wasn't properly documented. Added explicit logging to
track PBS override preservation using the correct monitoring ID.
2025-09-10 17:11:53 +00:00
Pulse Monitor 4ac4bb7e59 fix: ensure cluster endpoints include port number (addresses #428)
When detecting Proxmox cluster nodes, the Host field was being set to just the node name without a port. This caused validation to fail with "invalid Port number" error when qdevices were running.

Now cluster endpoints properly include the port (8006) in the Host field, allowing clusters with qdevices to be added successfully.
2025-09-10 17:01:11 +00:00
Pulse Monitor 27388e3538 fix: make Physical Disks search field consistent with Storage Pools styling
Updated the Physical Disks search to match the Storage Pools search field:
- Added container with white/gray background and border
- Added search icon on the left
- Matched padding, text size, and focus states
- Ensured consistent dark mode styling
2025-09-10 16:56:27 +00:00