Commit Graph

1024 Commits

Author SHA1 Message Date
rcourtman 2fef77cd01 fix: resolve guest URL action visibility 2025-09-28 18:52:14 +00:00
rcourtman 6f4771ae2d feat: unify styling and improve cluster detection 2025-09-28 18:46:52 +00:00
Pulse Monitor 9331ef53ae Revert "fix: only use cluster/resources when IsCluster is true (addresses #448)"
This reverts commit 4a9912f410.
2025-09-11 20:21:08 +00:00
Pulse Monitor 6e8e2d14f5 fix: only use cluster/resources when IsCluster is true (addresses #448)
The aggressive use of cluster/resources was breaking storage collection
for setups with multiple standalone nodes or improperly clustered nodes.
Now only uses cluster/resources when explicitly configured as a cluster,
falling back to traditional node-by-node polling otherwise.

This should fix the missing storage issue where one node's storage
wasn't showing after upgrading to rc5.
2025-09-11 20:18:18 +00:00
Pulse Monitor 1f115897c7 fix: use correct binary path after build
The Makefile builds to ./pulse not bin/pulse. Updated the install script
to copy from the correct location.
2025-09-11 16:42:17 +00:00
Pulse Monitor 63f51984aa fix: export Go path before building from source
The build was failing because Go wasn't in PATH after installation. Now
exports PATH=/usr/local/go/bin:/home/pulse/.local/bin:/home/pulse/.local/bin:/home/pulse/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games before running make build.
2025-09-11 16:39:15 +00:00
Pulse Monitor cc75318340 fix: install npm dependencies before building from source
The build was failing because npm packages weren't installed. Now runs
npm install in frontend-modern directory before running make build.
2025-09-11 16:36:52 +00:00
Pulse Monitor 688627756c fix: inline Go installation code to fix undefined install_go function
The --main flag was calling install_go which didn't exist. Now properly
installs Go 1.23 when needed during source builds.
2025-09-11 16:31:17 +00:00
Pulse Monitor b3c5343f8c fix: handle --main flag properly for existing installations (addresses #448)
The install script now correctly builds from source when --main is specified,
even if Pulse is already installed. Previously it would go into the update
prompt instead of building from source.
2025-09-11 16:29:42 +00:00
Pulse Monitor 1412105f99 fix: preserve storage when node returns empty result but has existing data (addresses #448)
The issue was that when a node was successfully polled but returned empty storage
(e.g., due to API permissions), it was still marked as 'successfully polled'.
This prevented the preservation logic from keeping existing storage data.

Now if a node returns empty storage but we have existing storage for that node,
we don't mark it as polled, allowing the preservation logic to keep the data.

This should fix the issue where storage disappears from one node in #448.
2025-09-11 16:00:25 +00:00
Pulse Monitor d514458fbb fix: improve storage collection resilience when nodes timeout (addresses #448)
- Send error result to channel when storage query times out so preservation logic works
- Ensures storage data is preserved for nodes that experience timeouts
- Fixes issue where storage/backups would disappear when a node times out
2025-09-11 15:51:37 +00:00
Pulse Monitor cdbb92f01c fix: correct binary path when building from source
The Makefile builds to 'pulse' not 'bin/pulse', updated the install
script to copy from the correct location.
2025-09-11 15:41:01 +00:00
Pulse Monitor d203a746e8 fix: install Go 1.23 when building from source if system Go is too old
- Checks if system Go version meets minimum requirement (1.21+)
- Downloads and installs Go 1.23 from official releases if needed
- Supports amd64, arm64, and armv6l architectures
- Ensures Go is in PATH for the build process

This fixes build failures on Debian 12 which ships with Go 1.19
2025-09-11 15:35:03 +00:00
Pulse Monitor 8db2ab264a fix: handle missing argument for --main option
Fixed 'unbound variable' error when using --main without additional arguments.
Added check for argument count before accessing $2.
2025-09-11 15:20:39 +00:00
Pulse Monitor 12ab1b0c6f docs: document --main install option for testing latest fixes
- Added to README.md Quick Start section
- Added comprehensive docs in INSTALL.md
- Explains when and why to use --main option
- Notes build dependencies requirement
2025-09-11 15:19:57 +00:00
Pulse Monitor 2bc834de70 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 b45220600b 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 35c6166354 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 47c12a2897 test: create test version for issue #448 2025-09-11 15:01:23 +00:00
Pulse Monitor fea7cbd5d3 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 d1dc451f61 chore: bump version to v4.15.0-rc.7 2025-09-11 14:19:58 +00:00
Pulse Monitor a321f2ba54 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 a7ac3a50da chore: bump version to v4.15.0-rc.6 2025-09-11 14:02:05 +00:00
Pulse Monitor 40495c0b64 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 6e2e74b706 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 28fc726587 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 5dc24e74b3 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 496ab7acdb 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 86283e4c28 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 9d40e56223 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 c10e550aab 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 67676b291c 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 e386a83778 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 bd0c817056 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 9646f8ed59 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 363e454ad1 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 fa1e074842 chore: bump version to v4.15.0-rc.5 2025-09-11 09:02:23 +00:00
Pulse Monitor fe75d54cd6 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 350420ec7e improve: clarify disk column header to show it represents used space (addresses #446) 2025-09-11 08:56:03 +00:00
Pulse Monitor 9486e8679d 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 1a147bec86 revert: version back to 4.15.0-rc.4 2025-09-11 07:36:48 +00:00
Pulse Monitor b4c7240865 chore: bump version to v4.15.0-rc.5 2025-09-11 07:33:12 +00:00
Pulse Monitor d4f87a6230 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 23b2377c77 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 d9a6859fbd 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 401168cf5c fix: update Dockerfile to use Go 1.24 for compatibility 2025-09-10 21:43:35 +00:00
Pulse Monitor 2c512a96e3 chore: bump version to v4.15.0-rc.4 2025-09-10 21:38:46 +00:00
Pulse Monitor a9714e62f6 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 94943ea847 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 71697f63bf 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