Commit Graph

690 Commits

Author SHA1 Message Date
Pulse Monitor 437e4f9528 fix: add missing Node column header in flat list view
addresses #370 - the table headers were missing the Node column when in flat/list view mode, causing all columns after VMID to be misaligned by one position
2025-08-29 06:45:17 +00:00
Pulse Monitor b5de59400d chore: bump version to v4.10.0-rc.1 2025-08-28 17:41:26 +00:00
Pulse Monitor 7518f994d1 fix: improve configuration loading reliability and UX
- Added retry logic for failed node loading with automatic 3-second retry
- Added loading indicator while configuration is being fetched
- Prevents showing empty configuration during initial load
- Better handles transient network or rate limit errors

This further addresses #372 by ensuring configuration data loads properly
even when there are temporary issues like rate limiting or network hiccups.
2025-08-28 17:37:19 +00:00
Pulse Monitor 754ccee715 fix: address intermittent configuration display issue (#372)
- Increased rate limits for configuration GET endpoints to prevent 429 errors
- Added automatic retry logic for rate-limited requests with exponential backoff
- Added small delays between initial API calls to prevent burst requests
- Configuration read endpoints now use PublicEndpoints limit (1000/min vs 500/min)

This should resolve the issue where the configuration page sometimes shows
no information and prompts for system setup even when it's already configured.
2025-08-28 17:32:29 +00:00
Pulse Monitor 2b79ae8648 feat: improve dashboard UI with tags and better filtering
- Add clickable tag badges with Proxmox-style coloring for VM/container tags
- Implement grouping toggle to switch between node-grouped and flat list views
- Replace alert dot indicators with left border highlighting to avoid visual conflicts
- Add tag filtering support in search (tags:tagname)
- Fix alert visualization on storage page to use left borders
- Improve search functionality with uptime metric support
- Remove info tooltip from search field, add clear button instead
- Update placeholder text to be more helpful

addresses #370, addresses #371
2025-08-28 17:26:57 +00:00
Pulse Monitor ca28f42edb feat: add grouping toggle for flat list view
adds a grouped/list toggle to the dashboard that allows users to switch between:
- grouped view: vms/containers grouped by node (default)
- list view: flat list of all vms/containers across cluster

in list view, users can sort by any column to identify top resource consumers across the entire cluster, useful for monitoring high bandwidth/cpu/memory usage

addresses #370
2025-08-28 14:39:36 +00:00
Pulse Monitor 027db449aa fix: clear update cache when version changes after update
- Automatically invalidate cached update info when current version changes
- Prevents stale update banner after user updates Pulse
- Cache now checks if version matches before using cached data
2025-08-28 14:13:11 +00:00
Pulse Monitor cad7656d76 fix: support non-local storage for templates in install.sh (addresses #368)
- Use selected storage instead of hardcoded 'local' for template listing
- Use storage:vztmpl/template format instead of hardcoded paths
- Downloads now go to the selected storage (btrfs, zfs, etc.)
- Check template existence using pveam list with correct storage
2025-08-28 14:07:09 +00:00
Pulse Monitor d9e0571605 fix: make install script interactive when piped from curl
- Modified safe_read to properly detect when no TTY is available
- Returns failure status when truly non-interactive (no /dev/tty)
- Only auto-selects update when safe_read actually fails
- Now curl | bash will show the interactive menu if terminal is available
2025-08-28 13:48:56 +00:00
Pulse Monitor a3cef7c5be chore: bump version to v4.9.1 2025-08-28 13:30:19 +00:00
Pulse Monitor 921ccf3008 fix: hide PVE nodes without backups in backup tab (addresses #366)
- Filter PVE nodes to only show those with backups or snapshots
- Hide entire PVE nodes table when no nodes have any backups
- Prevents empty/useless rows from cluttering the UI
2025-08-28 13:26:30 +00:00
Pulse Monitor ea12cfff58 feat: enhance diagnostics to show detailed VM disk monitoring issues
- show which specific VMs have disk monitoring problems
- list filesystem details showing what's filtered and why
- provide actionable info for troubleshooting guest agent issues
- addresses #367 by giving users better debugging information
2025-08-28 12:48:42 +00:00
Pulse Monitor af4c0afe40 fix: show dash instead of 0% for VMs without guest agent disk data
addresses #367 - when VMs don't have working guest agent data, display a dash instead of misleading 0% disk usage
2025-08-28 12:44:46 +00:00
Pulse Monitor 8c0556bbb6 fix: improve error handling for node connection tests (addresses #362, #363)
- Handle standalone nodes properly in diagnostics (fixes #362)
  - Try /nodes endpoint first which works for both clustered and standalone
  - Make cluster status optional, not required for connection success
  - Set cluster node count to 1 for standalone nodes

- Fix test connection UI showing success styling on errors (fixes #363)
  - Return proper HTTP error status when test-config endpoint fails
  - Clean up error messages to remove "API request failed: XXX" prefix
  - Add debug logging to trace test result states
  - Ensure consistent error status codes from all test endpoints

Both issues reported connection problems - standalone nodes failing to connect
and error messages appearing with success styling. These fixes ensure proper
handling of both scenarios.
2025-08-28 11:56:02 +00:00
Pulse Monitor 4b7363d8c1 fix: iframe embedding checkbox persistence and functionality (addresses #351)
- Fixed /api/config/system endpoint to return all persisted settings fields including allowEmbedding, discoveryEnabled, and allowedEmbedOrigins
- Added comprehensive input validation for all settings with proper min/max bounds
- Fixed security headers to properly allow/deny iframe embedding based on user preference
- Added real bug detection test suite that validates behavior, not just status codes

The iframe embedding checkbox now properly persists its state and actually controls whether Pulse can be embedded in iframes. When enabled, removes X-Frame-Options header and sets CSP frame-ancestors to allow embedding.
2025-08-28 09:17:54 +00:00
Pulse Monitor 3f6451662f fix: detect fresh installs correctly for auto-update prompts
The script was checking if CONFIG_DIR existed to detect fresh installs, but we create that directory early in the process. Now checking for system.json file instead which only exists after a real installation.
2025-08-28 08:10:25 +00:00
Pulse Monitor 45267306eb fix: enable auto-update prompts for LXC containers
LXC containers are full Linux systems with systemd and can handle auto-updates perfectly fine. Only Docker containers should skip auto-update prompts since they're immutable and can't restart themselves.

- Separated IN_DOCKER flag from IN_CONTAINER
- LXC containers now get auto-update prompts like bare metal installs
- Docker containers still skip auto-updates as intended
2025-08-28 08:07:20 +00:00
Pulse Monitor b3a059070c docs: add account lockout and recovery documentation
- Document lockout behavior (5 attempts, 15 minute duration)
- Add recovery instructions in SECURITY.md
- Document new API endpoints (/api/login, /api/security/reset-lockout)
- Update troubleshooting guide with lockout recovery steps
2025-08-27 22:02:51 +00:00
Pulse Monitor 0f330a14ff feat: improve account lockout mechanism with recovery options
addresses #360

- Add detailed lockout feedback in login API responses showing remaining attempts
- Display lockout warnings in the frontend with attempt counters
- Show time remaining when account is locked (15 minute lockout duration)
- Add visual indicators (lock icon) for lockout status
- Implement /api/security/reset-lockout endpoint for admin recovery
- Store lockout information with expiration tracking
- Provide clear user guidance about lockout duration and recovery
2025-08-27 21:43:25 +00:00
Pulse Monitor 52ea3811fb chore: clean up root directory - move scripts to scripts folder 2025-08-27 20:48:51 +00:00
Pulse Monitor 7c4207870e fix: add echo -e for proper color code rendering in install script 2025-08-27 20:34:40 +00:00
Pulse Monitor a4793be98d fix: remove mock support from production builds 2025-08-27 19:55:44 +00:00
Pulse Monitor 3a2162b3b9 fix: correct import paths in monitor.go for Docker build 2025-08-27 19:53:49 +00:00
Pulse Monitor b4f2e6051b chore: bump version to v4.9.0 2025-08-27 19:44:45 +00:00
Pulse Monitor 42338d38aa fix: use orange color for PMG host backups instead of purple
Changed PMG host backup badges from purple to orange since PBS
already uses purple. This avoids color confusion between PBS
instances and PMG host configuration backups.

Color scheme:
- VM: Blue
- LXC: Green
- Host/PMG: Orange
- PBS: Purple (unchanged)
2025-08-27 19:29:33 +00:00
Pulse Monitor 8c13c19b0a fix: use info circle icon for non-verified backups
Changed the non-verified backup icon from a confusing circle-check
to an info/exclamation circle icon which better indicates an
informational/pending state rather than a verified state.
2025-08-27 19:25:09 +00:00
Pulse Monitor ce4159957b fix: replace emoji with SVG icons for backup verification status
Replaced the clock emoji (⏱) for non-verified backups with a proper
SVG circle-check icon. Also replaced the checkmark emoji with an SVG
checkmark. The new icons are more professional and scale better.

Non-verified backups now show a subtle gray circle-check icon instead
of the clock emoji.
2025-08-27 19:21:51 +00:00
Pulse Monitor d8844f3bb5 fix: add null checks for WebSocket alert arrays
Fixed TypeError when processing WebSocket messages by adding proper
null checks before calling forEach on activeAlerts and recentlyResolved
arrays. The arrays are now checked to ensure they exist and are arrays
before iteration.
2025-08-27 19:12:56 +00:00
Pulse Monitor 6aa1785a3a fix: resolve initialization order error in backups component
Moved hasHostBackups computation after normalizedData to fix the
"Cannot access before initialization" error. The hasHostBackups memo
now properly depends on normalizedData being defined first.
2025-08-27 19:10:13 +00:00
Pulse Monitor 3615a5c941 feat: add dynamic VM/LXC/PMG type filter for backups
When PMG host backups are detected in the backup list, a new type filter
automatically appears with options to filter by VM, LXC, or PMG (host) type.
This makes it easier to find specific backup types when host backups exist.

The filter is dynamic and only shows when there are host-type backups present.
2025-08-27 19:08:00 +00:00
Pulse Monitor d83082fbe7 fix: integrate mock data system with monitoring
Mock mode now properly returns simulated data including PMG host backups.
The monitor's GetState() method now checks for mock mode and returns
mock data when enabled, allowing full testing of UI features without
real Proxmox nodes.
2025-08-27 19:01:51 +00:00
Pulse Monitor 3a31cdcfae fix: properly identify PMG host config backups
Addresses #359 - PMG host config backups with VMID=0 are now correctly
identified as "Host" type instead of being misidentified as LXC containers.
Added purple color scheme for Host type backups in the UI.
2025-08-27 18:52:27 +00:00
Pulse Monitor 63e7486722 fix: skip update checks for development builds
Development builds (containing -dirty or git commit hashes) will no
longer check for updates automatically to avoid confusion during
development. Manual checks can still be forced for testing.
2025-08-27 18:47:10 +00:00
Pulse Monitor c646a7e9c8 refactor: make update notifications more subtle and professional
- Changed from bright blue gradient to subtle light blue background
- Reduced padding for less intrusive appearance
- Improved professional wording:
  - "New version available" instead of "Update available"
  - Direct "View details" link to release notes
  - Removed redundant update instructions (already in release notes)
- Added deployment-specific hints only where needed (ProxmoxVE/Docker)
- Better color contrast with blue text on light background

The notifications are now informative without being distracting,
maintaining a professional appearance while ensuring users don't
miss important updates.
2025-08-27 18:43:56 +00:00
Pulse Monitor 0318c197d9 feat: add visual update notifications
Implemented a comprehensive update notification system that alerts users
when new versions are available:

- Automatic update checking on app startup
- Visual indicators: dismissible banner at top and badge on Settings tab
- Smart dismissal with localStorage persistence
- Deployment-specific update instructions (Docker, ProxmoxVE, systemd)
- 24-hour cache to avoid excessive API calls
- Manual check option in Settings

The system respects user preferences and won't re-show dismissed versions
unless explicitly requested. Works seamlessly with both stable and RC
update channels.
2025-08-27 18:19:05 +00:00
Pulse Monitor 3b9ec69f1e feat: prompt existing users about auto-updates when upgrading
Users upgrading from versions before auto-updates will now be prompted
to enable the new automatic update feature. The prompt defaults to 'Yes'
for convenience but allows users to opt-out if they prefer manual updates.

The prompt only appears when:
- Upgrading or reinstalling an existing installation
- The auto-update timer doesn't already exist
- Not running with --enable-auto-updates flag
- Not running in a container environment
2025-08-27 16:10:37 +00:00
Pulse Monitor 1f3cf4d694 docs: add comprehensive automatic update documentation
- Document auto-update feature in README
- Add detailed setup instructions in INSTALL.md
- Include auto-update configuration in CONFIGURATION.md
- Explain systemd timer behavior and controls
- Note that Docker doesn't support auto-updates
2025-08-27 15:43:03 +00:00
Pulse Monitor 87a35f6fbc feat: add automatic stable update system
- Add systemd timer for daily update checks (2-6 AM window)
- Create pulse-auto-update.sh script with safe rollback on failure
- Add --enable-auto-updates flag to install script
- Prompt users during fresh install to enable auto-updates
- Respect autoUpdateEnabled flag in system.json
- Only install stable releases, never RCs
- Full logging to systemd journal
- Tested and verified working in container
2025-08-27 15:37:02 +00:00
Pulse Monitor 477649ff6e fix: address #357 - persist schedule settings correctly in alerts UI
The schedule settings (quiet hours, grouping, escalation) were not persisting
because the component state was lost when switching tabs. Lifted the state to
the parent component so it persists across tab switches and saves correctly.
2025-08-27 14:54:44 +00:00
Pulse Monitor 98484da0c2 fix: prevent shared storage conflicts between clusters (addresses #355)
When multiple clusters were added, shared storage from different clusters
would use the same ID (e.g., 'shared-local'), causing storage from one
cluster to overwrite storage from another. Now using instance-specific IDs
for shared storage to ensure each cluster's storage is properly tracked.
2025-08-27 14:26:42 +00:00
Pulse Monitor 27e40d5dbd fix: remove mock support from production builds 2025-08-27 13:50:39 +00:00
Pulse Monitor fcbf657e39 fix: add production build stub for mock integration 2025-08-27 13:48:06 +00:00
Pulse Monitor a651ff8ff1 chore: bump version to v4.9.0-rc.2 2025-08-27 13:42:17 +00:00
Pulse Monitor a0930aa084 fix: remove incorrect container check from PBS setup script
PBS often runs in Docker containers, so the container check was preventing
legitimate setups. Also fixed the script to check for proxmox-backup-manager
instead of pveum (which is PVE-only).
2025-08-27 13:39:11 +00:00
Pulse Monitor dd4ae43e5b feat: add dev.sh for hot-reload development
Simple wrapper that uses backend-watch.sh to detect Go file changes
and automatically rebuild/restart the backend during development
2025-08-27 13:29:42 +00:00
Pulse Monitor 82ed88c9f1 test: update existing test scripts to handle auth modes properly
- Updated test-security.sh to detect and handle DISABLE_AUTH mode
- Fixed test-release.sh to properly check for compiled binary
- Updated test-proxy-scenarios.sh arithmetic operations for bash compatibility
- All tests now properly detect authentication state and adapt accordingly
2025-08-27 11:08:11 +00:00
Pulse Monitor 59693453a9 fix: add comprehensive input validation for API endpoints
- Added required field validation for name, type, and host in node configuration
- Added duplicate node prevention by name (returns 409 Conflict)
- Added IP address format validation to reject invalid IPs
- Added port range validation (1-65535)
- Added validation for negative polling intervals in system settings
- Added HEAD request support for health and version endpoints
- Reduced node addition timeout from 10s to 3s to prevent UI hanging

These validation improvements were discovered through comprehensive testing
and prevent invalid data from being accepted by the API.
2025-08-27 11:07:39 +00:00
Pulse Monitor c2fe40dfed feat: enhance backup tab with useful metadata
- Changed deduplication display from ratio (14.4:1) to multiplier (14.4x)
- Added encryption indicators for PBS backups (lock icon)
- Added owner column showing who created each PBS backup
- Fixed owner display to use separate column instead of cramped next to node name
- Added owner field to PBSBackup model and populated from PBS API

These improvements make it easier to understand backup status at a glance
2025-08-27 07:38:30 +00:00
Pulse Monitor c57b5f1643 fix: remove all VM disk monitoring mentions from setup script (addresses #348)
The setup script no longer mentions VM disk monitoring at all, as requested.
This avoids confusion about what works or doesn't work on different
Proxmox versions. The permissions are still set up correctly behind
the scenes, but users don't need to see confusing information about it.
2025-08-26 23:03:00 +00:00
Pulse Monitor 58d466e944 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