Commit Graph

786 Commits

Author SHA1 Message Date
Pulse Monitor 4bd15bd613 fix: clear custom payload when switching webhook types (addresses #378)
When switching from generic webhook to discord or other service types,
the custom payload template was persisting and being sent incorrectly.
Now clears the payload template when switching to non-generic services.
2025-08-31 08:21:30 +00:00
Pulse Monitor 395a0c3e90 fix: broadcast state updates after alert acknowledgment (addresses #380)
- Add WebSocket hub reference to AlertHandlers
- Broadcast state after acknowledge, clear, and bulk operations
- Ensures UI acknowledgment counts update immediately without refresh
- Fixes issue where acknowledgment would disappear after 2 seconds
2025-08-31 06:58:10 +00:00
Pulse Monitor 1c7cca3c6c fix: detect HTTPS protocol when behind reverse proxy for setup scripts
addresses #394 - setup script now correctly uses https:// in generated commands
when Pulse is running behind an HTTPS reverse proxy like Traefik by checking
the X-Forwarded-Proto header
2025-08-30 22:48:53 +00:00
Pulse Monitor ce8cf0b824 improve: clarify CIDR notation requirement in installer IP prompt
addresses #392 - make it clear that static IP should include CIDR notation
2025-08-30 22:44:29 +00:00
Pulse Monitor 197d56c1e6 fix: enforce admin privileges for proxy auth users on write operations
addresses GHSA-wmgw-3g78-89xf - proxy authenticated non-admin users now properly receive 403 Forbidden when attempting write operations

- Added RequireAdmin middleware to check proxy auth admin role
- Applied admin checks to node add/update/delete operations
- Applied admin checks to system settings updates
- Applied admin checks to export/import operations
- Applied admin checks to API token regeneration
- Applied admin checks to password changes
- Non-admin proxy auth users now have proper read-only access as documented
2025-08-30 22:30:59 +00:00
Pulse Monitor 7ac9a55bc9 fix: acknowledge alert button not updating count (addresses #380)
- Fixed reactivity issue with alertStats computation in SolidJS
- Properly access store values to ensure count updates when alerts are acknowledged
- Changed from Object.values() to mapping over keys for proper store reactivity
2025-08-30 17:12:33 +00:00
Pulse Monitor 6ba52fde24 fix: duplicate auto-update prompt when answering No (addresses #391)
- Set ENABLE_AUTO_UPDATES global variable when user responds in select_install_mode
- Only ask about auto-updates once during installation
- Fixed issue where answering No to auto-updates would prompt again later
2025-08-30 17:00:43 +00:00
Pulse Monitor 115e19fad8 feat: add optional VLAN support to installer (addresses #392)
- Added optional VLAN ID prompt in both Quick and Advanced modes
- Regular users can just press Enter to skip VLAN configuration
- Validates VLAN ID range (1-4094)
- Adds tag parameter to network config when VLAN is specified
- Defaults to no VLAN, ensuring regular users aren't affected
2025-08-30 16:37:38 +00:00
Pulse Monitor 1d083c0280 fix: restore port prompt in Quick installation mode
The Quick installation mode was no longer asking for the port number,
just using the default 7655. This regression was introduced when
the duplicate main function was removed.

Restored the port prompt to Quick mode so users can specify a custom
port if needed, matching the original behavior.
2025-08-30 16:29:50 +00:00
Pulse Monitor cbef650e83 fix: remove duplicate main function in install script (fixes #391)
The install script had a duplicate mainmain() function that was causing
the installation to run twice. This resulted in:
- Double prompts for auto-updates configuration
- Confusing installation output with duplicate headers
- The script appearing to reinstall after initial installation

Removed the duplicate function (lines 2025-2467) and fixed the script
to run only once as intended.

Tested on fresh Debian 12 LXC container - confirmed single installation
with working web UI on port 7655.
2025-08-30 16:07:28 +00:00
Pulse Monitor cc0c28ce26 fix: handle unbound container variable in install script (fixes #390)
The install script was failing with "container: unbound variable" error
when run with set -u. Fixed by using ${container:-} to provide a default
empty value when the variable is not set.
2025-08-30 13:56:19 +00:00
Pulse Monitor 946569558a chore: bump version to v4.10.2 2025-08-30 12:39:41 +00:00
Pulse Monitor 9a6fcf23b0 fix: add offline node checks to prevent 595 auth errors (addresses #379)
- Added offline node status checks before attempting to access node resources
- Fixed pollStorageWithNodes to skip offline nodes
- Fixed GetNodeStatus calls to skip offline nodes
- Fixed storage metric collection to skip offline nodes
- Added test offline node (pve3) to mock data generator

This prevents the 595 "authentication failed" errors that occur when
trying to access resources on offline cluster nodes through other nodes.
2025-08-30 12:36:29 +00:00
Pulse Monitor 87ef949e1b feat: improve screenshots and mobile UI responsiveness
- Update screenshot tool to use MacBook Air resolution (2560x1600)
- Remove empty side borders from screenshots
- Use mock data for all screenshots for privacy
- Fix mobile alert buttons overflowing viewport
- Exempt localhost from API rate limiting for better dev experience
- Update documentation to showcase all features with screenshots
- Reorganize README visual tour into feature sections
2025-08-30 12:25:53 +00:00
Pulse Monitor 0f643aa66d fix: remove vertical translate animation to prevent border misalignment
- removed hover:-translate-y-px that was causing the outline to appear misplaced
- kept shadow effect on hover for visual feedback
- changed from shadow-md to shadow-sm for subtler hover effect
2025-08-30 11:40:12 +00:00
Pulse Monitor 36340ebc6d improve visual feedback for selected node in summary table
- added subtle blue outline (1px with 50% opacity) to selected row
- dimmed unselected rows to 50% opacity when a node is selected
- hovering brings dimmed rows to 80% opacity for better interaction
- added padding to table container to prevent border clipping
2025-08-30 11:38:29 +00:00
Pulse Monitor 86670f23d1 fix: improve handling of offline nodes and 595 errors
addresses #379 - better handling of offline nodes in clusters
- Skip polling VMs/containers from offline nodes to avoid 595 errors
- Improved error message for 595 to distinguish between auth failures and offline node access

addresses #389 - improved error messaging
- Better detection of whether 595 is an auth issue or offline node issue
- Clearer error messages to help users diagnose the actual problem

The 595 error can occur when:
1. Authentication actually fails (wrong credentials)
2. Trying to access resources on an offline node through another node in the cluster
2025-08-30 11:27:35 +00:00
Pulse Monitor 12150039e2 fix: address LXC container parsing and timeout issues
addresses #388 - LXC containers not showing due to VMID type mismatch
- Changed Container.VMID from int to FlexInt to handle string VMIDs from older Proxmox versions
- Updated all code that references Container.VMID to cast to int where needed

addresses #389 - connection timeout errors with Proxmox nodes
- Increased default CONNECTION_TIMEOUT from 10s to 30s to handle slower networks
- This should resolve "context deadline exceeded" errors when polling nodes

addresses #379 - authentication errors may have been related to timeouts
2025-08-30 11:21:58 +00:00
Pulse Monitor 7e0c8ae42f docs: simplify project name from 'Pulse for Proxmox' to 'Pulse'
The context already makes it clear this is for Proxmox monitoring
2025-08-30 11:15:47 +00:00
Pulse Monitor 9c9da31bf2 feat: improve documentation with high-quality screenshots and mock alert history
- Add high-quality screenshots with 3x device scale factor for crisp text
- Implement mock alert history generator spanning 90 days
- Update documentation with detailed screenshot descriptions
- Add visual tour section to README with key screenshots
- Fix mock mode to properly separate from production data
- Clean up screenshot script to use actual mock data instead of DOM injection
- Enhance FAQ and webhooks docs with relevant screenshots
2025-08-30 11:13:41 +00:00
Pulse Monitor 587ffd2be8 feat: install jq in containers for better JSON handling
- Containers created by the script now get jq installed
- Makes auto-update config more reliable
- Keeps JSON properly formatted
- Falls back gracefully if jq can't be installed
- Only affects fresh installs in containers, not existing systems
2025-08-30 08:03:05 +00:00
Pulse Monitor 89ad7a3261 feat: re-ask about auto-updates for users with misconfigured settings
- Detects when auto-updates are disabled despite timer being installed
- Shows 'Auto-updates are currently disabled' message to be clear
- Offers to enable auto-updates during any update/reinstall operation
- Works with --version flag, regular updates, and reinstalls
- Helps users who had the broken config from before the sed fix
2025-08-30 07:37:54 +00:00
Pulse Monitor bf30655a81 fix: auto-update setup properly sets config when jq not installed
- Fixed sed fallback in setup_auto_updates to correctly update existing autoUpdateEnabled field
- Improved Docker detection with multiple methods for better reliability
- Auto-updates now work correctly in LXC containers when enabled
2025-08-30 07:26:10 +00:00
Pulse Monitor 75e33fed8b chore: bump version to v4.10.1 2025-08-29 23:11:12 +00:00
Pulse Monitor e76328df0d fix: improve storage tab styling consistency
- Remove unnecessary colors from storage type badges
- Fix node column styling to match other tabs (font-medium)
- Ensure consistent text styling across all columns
- Remove redundant storage totals from node header rows
2025-08-29 23:07:02 +00:00
Pulse Monitor 421de870db improve: add version data to mock nodes and clean up storage display
- Add PVE and kernel version data to mock node generation
- Remove redundant total storage stats from node header rows in storage tab
- Simplify storage table layout by spanning node name across full row
2025-08-29 22:43:25 +00:00
Pulse Monitor 5430ec571d fix: backup tab grouping toggles now work properly 2025-08-29 22:17:26 +00:00
Pulse Monitor 221d23c7d9 fix: make metric bars responsive with minimum width constraints
- changed fixed widths to minimum widths for table columns
- made MetricBar component expand to fill available space
- maintains minimum width of 120px to prevent text cutoff
- bars now grow on wider screens while staying readable on narrow ones
2025-08-29 22:09:37 +00:00
Pulse Monitor 0ba41fb4c4 feat: add PVE version display and fix backup counts
- show PVE badge with version (e.g., PVE v8.2.0) like PBS nodes
- use orange color for PVE badge to match app color scheme
- extract clean version number from pve-manager string
- fix backup counts excluding PBS backups from PVE node counts
- prevent double-counting of PBS backups accessed through storage
2025-08-29 22:02:00 +00:00
Pulse Monitor 0e3a3b1930 fix: restore backup table columns and fix PBS storage node display
- restored Node, Owner, and Location columns to backups table
- fixed issue where PBS backups via Proxmox storage showed storage name in Node column
- now correctly shows actual Proxmox node in Node column for all backup types
- Location column shows storage/datastore name without duplication
2025-08-29 21:41:15 +00:00
Pulse Monitor 23f799aee9 improve backups table: remove redundant columns, reorder for better flow
- removed redundant Node column (info now in Location column)
- removed Owner column (was showing all dashes)
- reordered columns: VMID, Type, Name, Time, Size, Backup, Location, Verified, Details
- combined node:storage in Location column for clarity
2025-08-29 21:23:33 +00:00
Pulse Monitor fdb0453a42 fix: actually prompt for auto-updates in container installation
- Add auto-updates prompt to Quick mode (not just Advanced)
- Remove 'local' keyword so the flag variable is accessible later
- Previously the prompt appeared but the choice wasn't being passed through
2025-08-29 20:40:57 +00:00
Pulse Monitor 8459c5e0b2 fix: add missing auto-update script
The install script was trying to download this from GitHub but it didn't exist,
causing auto-update setup to fail with a 404 error.
2025-08-29 20:34:22 +00:00
Pulse Monitor 510fdeebd5 fix: ensure auto-updates prompt appears during container installation
- Add auto-updates prompt to Proxmox container creation flow
- Pass the choice to container via --enable-auto-updates flag
- Previously the prompt was skipped entirely for container installs
2025-08-29 20:12:28 +00:00
Pulse Monitor 2c0dfbe30a fix: prevent install script hanging in unprivileged containers
- Add safe_systemctl wrapper with 5-second timeout for systemctl commands
- Handle systemctl daemon-reload hanging in unprivileged LXC containers
- Provide clear messaging when systemctl fails (common in unprivileged mode)
- Installation continues successfully even when systemctl operations fail

This addresses #386 where the install script would hang indefinitely
in unprivileged containers due to systemctl daemon-reload never completing.
2025-08-29 19:51:41 +00:00
Pulse Monitor 6ea64c2bf5 fix: ask for space-separated DNS servers instead of converting
Simpler to just ask users to enter DNS servers space-separated
(the format Proxmox expects) rather than converting from commas
2025-08-29 18:53:48 +00:00
Pulse Monitor f4729890af fix: convert comma-separated DNS to space-separated for pct
The install script asks for comma-separated DNS servers but Proxmox expects
space-separated. Now properly converts the format before passing to pct create.
2025-08-29 18:53:08 +00:00
Pulse Monitor 85f679e313 fix: correct template selection in install script
The script was incorrectly prefixing storage name twice when listing templates,
resulting in ISOs:ISOs:vztmpl/... format instead of ISOs:vztmpl/...
This caused template existence checks to fail and always trigger downloads.

addresses #381
2025-08-29 18:17:38 +00:00
Pulse Monitor 914915b820 fix: make installation mode prompt wait for Enter key
- Changed mode selection to require Enter instead of single character
- Makes behavior consistent with other prompts
- Less jarring user experience
2025-08-29 17:45:17 +00:00
Pulse Monitor d814c8a021 fix: restore missing main function and improve container installation
- Restored accidentally deleted main() function
- Fixed script not running at all due to missing main call
- Added IN_CONTAINER checks to skip prompts in container context
- Fixed network bridge detection parsing issue
- Script now completes installation properly without hanging
2025-08-29 17:43:14 +00:00
Pulse Monitor ad9891f6a2 fix: prevent install script from exiting when Enter pressed at prompts
- Add safe_read_with_default wrapper to handle read failures gracefully
- Update all prompts to use the wrapper with appropriate defaults
- Script now continues with defaults instead of exiting on Enter key
- Addresses issue #383 installation problems
2025-08-29 17:23:40 +00:00
Pulse Monitor e3a47c0ef4 feat: improve install UX with numbered options for network and storage selection
- Users can now select bridges and storage by number (1, 2, 3, etc.)
- Much easier than typing out storage names like 'local-lvm'
- Shows default option in brackets [1]
- Still allows typing the name directly if preferred
- Works in both Quick and Advanced modes
- Improves installation experience significantly
2025-08-29 17:16:04 +00:00
Pulse Monitor 10a2e1fc35 fix: handle safe_read failures with set -e enabled
- Temporarily disable errexit when calling safe_read
- Prevents script from exiting when safe_read returns 1
- Properly handles non-interactive container installations
- Addresses #383
2025-08-29 17:05:20 +00:00
Pulse Monitor 2dc9cff782 fix: handle non-interactive mode in container installations
- Fix safe_read failures when running --in-container without TTY
- Use defaults when prompts fail in non-interactive mode
- Prevents hanging when pct exec runs install script
- Addresses #383
2025-08-29 17:03:55 +00:00
Pulse Monitor 3b09455e71 fix: show real-time progress during container installation
- Show installation output in real-time instead of capturing silently
- Users can now see what's happening during download/install
- Still includes 5-minute timeout to prevent infinite hangs
- Better error messages with manual recovery instructions
- Addresses #383 - users can now see where installation gets stuck
2025-08-29 16:58:08 +00:00
Pulse Monitor 13d586fb03 fix: add timeouts to prevent installation hanging on network issues
- Add timeout to GitHub API calls when fetching releases
- Add timeout to wget when downloading release files
- Add timeout to container installation with better error messages
- Show helpful error messages when timeouts occur
- Addresses #383 - installation getting stuck
2025-08-29 16:52:08 +00:00
Pulse Monitor 307923dc8b fix: only apply dev IP workaround when .dev-mode file exists 2025-08-29 16:41:18 +00:00
Pulse Monitor d7b0b69969 fix: hardcode dev IP for setup script URLs when proxied through vite 2025-08-29 16:34:16 +00:00
Pulse Monitor f48a2bed56 fix: remove conflicting stub file 2025-08-29 16:19:13 +00:00
Pulse Monitor d0b74a0238 feat: include mock package for Docker builds 2025-08-29 16:18:24 +00:00