Commit graph

661 commits

Author SHA1 Message Date
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
Pulse Monitor
bc33caf401 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
968cc3fc79 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
7bf627f019 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
eabe78dab1 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
60c60e5ed2 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
d9a26fb797 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
daf58db4c3 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
3d0175a3bd fix: remove mock support from production builds 2025-08-27 13:50:39 +00:00
Pulse Monitor
8f677d21a8 fix: add production build stub for mock integration 2025-08-27 13:48:06 +00:00
Pulse Monitor
019359ea6d chore: bump version to v4.9.0-rc.2 2025-08-27 13:42:17 +00:00
Pulse Monitor
dfe1435681 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
5ef12b83ad 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
9e35ce833c 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
e36436f75b 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
8f4871b4a2 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
8aecff66a2 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
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