Commit Graph

707 Commits

Author SHA1 Message Date
Pulse Monitor 02f3f9b0bb fix: update acknowledged count immediately when alert is acknowledged
addresses #380 - the acknowledged count now updates instantly when an alert
is acknowledged, rather than waiting for the next websocket update
2025-08-29 11:23:12 +00:00
Pulse Monitor 6c20398ac3 fix: address Discord webhook issues from #378
- Remove invalid url field from Discord embed (was causing 400 error)
- Remove SVG avatar/footer icons (Discord doesn't support SVG)
- Fix test webhook to use proper instance URL instead of 'pulse-monitoring'
- Discord webhook template now sends valid payloads
2025-08-29 11:15:35 +00:00
Pulse Monitor 2c7dc53911 feat: add version column to node tables
- Shows PVE/PBS version in node summary tables
- Helps quickly identify nodes needing updates
- Extracts just version number from PVE (e.g. 9.0.5)
- Also improved mock mode system for local development
2025-08-29 10:58:23 +00:00
Pulse Monitor 6d5aa7a4eb fix: remove column constraint from backup date row headers 2025-08-29 10:42:28 +00:00
Pulse Monitor ab8f4fde26 feat: improve UI consistency and visual feedback
- Remove redundant status column from node tables (green/red dot is sufficient)
- Make stopped guests more visually distinct (red indicator + dimmed row)
- Improve node selection behavior (visual only, no search field modification)
- Fix hover vs selected visual states for clarity
- Standardize hover highlighting across all tables (hover:bg-gray-50 dark:hover:bg-gray-700/30)
- Add better visual separation for tooltips (tags and backups)
- Remove unnecessary rebuild.sh script (only needed at release time)
- Fix backend-watch.sh to use correct PORT environment variable
- Update vite.config.ts to proxy to correct backend port (7656)
- Clean up console.log debugging statements
2025-08-29 10:39:45 +00:00
Pulse Monitor 2465fab7fc fix: ensure PATH and update command work for all installations
- Created setup_update_command() function to handle PATH and update script setup
- Adds /usr/local/bin to PATH in /etc/profile and /etc/bash.bashrc
- Creates /usr/local/bin/update script if it doesn't exist
- Called during all installation/update flows (fresh, update, reinstall)
- Fixes issue where existing users couldn't run 'update' command without full path
- Addresses #377
2025-08-29 07:59:03 +00:00
Pulse Monitor 4466990058 fix: add /usr/local/bin to PATH in containers so 'update' command works
This addresses #377 where users couldn't run the 'update' command
without specifying the full path when using pct enter.
2025-08-29 07:55:11 +00:00
Pulse Monitor 30939ed299 feat: improve tag indicator design
- Remove outer bright ring from tag indicators for cleaner flat design
- Increase indicator size from 1.5 to 2 for better visibility
- Keep active state ring for selected tags
2025-08-29 07:42:57 +00:00
Pulse Monitor 089cd2958f fix: remove Node column from list view entirely
After discussion, the Node column in list view adds unnecessary clutter. The purpose of list view is to see all guests as a unified, sortable list regardless of node. Users who need to know which node a guest is on should use grouped view - that's what it's for.

This simplifies the table, saves horizontal space, and makes the UI cleaner.
2025-08-29 07:29:31 +00:00
Pulse Monitor da017f5ab4 chore: remove debug console.log from IOMetric component 2025-08-29 07:23:36 +00:00
Pulse Monitor 82a38713ce fix: properly implement Node column in list view
addresses #370 - added Node column that only appears in flat/list view mode, positioned between VMID and Uptime columns. This allows users to see which node each guest belongs to when viewing the flat list, while keeping the cleaner view when in grouped mode.
2025-08-29 07:17:13 +00:00
Pulse Monitor 250d32db6b fix: remove broken Node column from list view
addresses #370 - completely removed the Node column feature from list view as it was causing persistent table alignment issues. Users can still see which node a guest is on by using the grouped view.
2025-08-29 07:05:24 +00:00
Pulse Monitor adf4168f02 fix: use SolidJS Show component for proper conditional rendering
addresses #370 - switched from JSX conditional expressions to SolidJS Show component for table column conditional rendering to ensure proper DOM updates
2025-08-29 06:56:16 +00:00
Pulse Monitor c3721ad5d4 fix: use conditional rendering instead of hidden class for Node column
addresses #370 - the hidden class doesn't work properly with table-fixed layout, causing columns to still take up space. Changed to conditional rendering with JSX expressions to properly add/remove the column from the DOM based on grouping mode
2025-08-29 06:54:41 +00:00
Pulse Monitor 2f743ab903 fix: resolve table column misalignment in flat list view
addresses #370 - changed from Show component to class-based hiding for the Node column to ensure proper table structure is maintained in both grouped and flat views. The Node column now always exists in the DOM but is hidden with CSS when not needed, preventing column shift issues.
2025-08-29 06:50:34 +00:00
Pulse Monitor f768d9c629 Revert "Revert "fix: add missing Node column header in flat list view""
This reverts commit 1e068742e7.
2025-08-29 06:48:04 +00:00
Pulse Monitor 9182072930 Revert "fix: add missing Node column header in flat list view"
This reverts commit 437e4f9528.
2025-08-29 06:47:44 +00:00
Pulse Monitor 70f91201d7 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 2d78d7da62 chore: bump version to v4.10.0-rc.1 2025-08-28 17:41:26 +00:00
Pulse Monitor 46b56fdbaa 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 91adcbf3f0 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 6d00b099bf 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 63803a444f 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 a946cb2c21 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 90e56241d1 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 06c99ce88b 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 961e69ddbb chore: bump version to v4.9.1 2025-08-28 13:30:19 +00:00
Pulse Monitor 116c325f47 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 a4dfd747b9 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 84dd6392e5 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 4f1f77e0ae 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 63f18afdef 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 d0dae51e34 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 f407137d62 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 b34f7eef09 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 2e41532d48 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 112c994d2d chore: clean up root directory - move scripts to scripts folder 2025-08-27 20:48:51 +00:00
Pulse Monitor 7f9a257961 fix: add echo -e for proper color code rendering in install script 2025-08-27 20:34:40 +00:00
Pulse Monitor a281a9169f fix: remove mock support from production builds 2025-08-27 19:55:44 +00:00
Pulse Monitor a7d15b0ed2 fix: correct import paths in monitor.go for Docker build 2025-08-27 19:53:49 +00:00
Pulse Monitor fb22418aa1 chore: bump version to v4.9.0 2025-08-27 19:44:45 +00:00
Pulse Monitor 39dd782008 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 ab1773c227 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 1321b982df 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 69e4985323 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 0c8cac55c8 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 2e905cc195 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 5d22ef6a0c 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 3995a7dacb 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 31f86be0b3 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