Commit Graph

858 Commits

Author SHA1 Message Date
Pulse Monitor 70250de0df chore: remove dev build tag and add auth debugging 2025-09-04 15:00:14 +00:00
Pulse Monitor fc25dbb8a8 fix: store username during login to fix password change 401 error (addresses #396) 2025-09-04 14:18:30 +00:00
Pulse Monitor 6cb33f13da feat: add Pushover notification template (addresses #392)
Added built-in Pushover template alongside Discord, Telegram, Gotify, and ntfy. Users can now select Pushover from the service dropdown instead of manually configuring it as a generic webhook.
2025-09-04 13:47:50 +00:00
Pulse Monitor 3650930a23 fix: properly identify VMID 0 PBS backups as Host type instead of LXC (addresses #359)
PMG host configuration backups (VMID=0) are now correctly shown as "Host" type
in the backup list instead of being incorrectly labeled as "LXC" containers.
Also added mock data for testing VMID 0 host backups.
2025-09-04 13:36:40 +00:00
Pulse Monitor 0a66bffb58 fix: alert acknowledgment routing path mismatch (addresses #380)
The acknowledge/unacknowledge/clear endpoints were returning 404 due to incorrect path trimming in HandleAlerts. The router was registered with /api/alerts/ but the handler was trimming /api/alerts, causing path parsing to be off by one character.
2025-09-04 13:06:15 +00:00
Pulse Monitor a999d8b80c fix: ensure PBS backup monitoring is enabled for all PBS instances (addresses #411)
- Added migration to automatically enable MonitorBackups for PBS instances
- This fixes the issue where PBS backups weren't showing for some users
- The migration runs on startup and persists the changes
- All new PBS instances already have MonitorBackups enabled by default
2025-09-04 12:56:38 +00:00
Pulse Monitor 2c3b45e7f8 docs: add PULSE_PUBLIC_URL documentation
- Added to CONFIGURATION.md environment variables section
- Added to WEBHOOKS.md for Gotify and ntfy services
- Added to DOCKER.md environment variables reference and compose example
- Explains how to configure the full Pulse URL for webhook notification links
2025-09-04 12:15:55 +00:00
Pulse Monitor 2391329d28 fix: provide full Pulse URL in Gotify/ntfy webhook notifications (addresses #415)
- Added PULSE_PUBLIC_URL config option to specify the full URL to access Pulse
- Updated notification manager to use publicURL when constructing webhook payloads
- Modified prepareWebhookData to construct full URLs instead of just paths
- Fixed test webhooks to use configured publicURL instead of hardcoded values
- Gotify and ntfy notifications now include clickable links that work properly
2025-09-04 12:07:23 +00:00
Pulse Monitor d1703ce4e9 improve: skip Windows System Reserved partitions in disk usage calculation (addresses #414)
- Windows System Reserved partitions now excluded from disk usage
- Added better handling for filesystems with zero total bytes
- Improved debug logging for skipped filesystems
- Prevents incorrect disk usage display for Windows VMs
2025-09-04 10:59:59 +00:00
Pulse Monitor 01cd11809e fix: improve cluster node health tracking for storage operations (addresses #405)
- Added storage permission errors (403) to exception list
- Permission denied errors no longer mark nodes as unhealthy
- Storage polling can now continue even with permission issues
- Prevents cascading failures when storage permissions are missing
- Nodes remain healthy for VM/container operations even if storage fails
2025-09-04 10:50:22 +00:00
Pulse Monitor 79d3f1617d docs: remove time references from password recovery sections 2025-09-04 10:34:16 +00:00
Pulse Monitor 23bf4b1265 docs: simplify password recovery stance - just start fresh
- Removed all complex recovery mechanisms from documentation
- Clear stance: forgotten password = start fresh (takes 2 minutes)
- No recovery mechanisms = no security vulnerabilities
- Pulse's simplicity is a feature, not a bug
- Updated both TROUBLESHOOTING.md and SECURITY.md
- Addresses GitHub discussion #413 with security-first approach
2025-09-04 10:31:42 +00:00
Pulse Monitor fbad442f5c docs: improve password recovery documentation with secure methods
- Removed overly convenient password reset script (security concern)
- Documented existing secure recovery token system
- Added proper security warnings and considerations
- Three-tier recovery approach: tokens (secure), recovery mode (localhost), manual (last resort)
- Emphasizes security best practices and password manager usage
- Addresses GitHub discussion #413 with security-conscious approach
2025-09-04 10:16:30 +00:00
Pulse Monitor 2d699ca46d feat: add password reset script and comprehensive documentation
- Created /opt/pulse/scripts/reset-password.sh for easy password recovery
- Script supports: reset password, set new username/password, disable auth, check status
- Added comprehensive password reset section to troubleshooting docs
- Covers all deployment types: native, Docker, ProxmoxVE LXC
- Addresses GitHub discussion #413 about password recovery
2025-09-04 10:06:54 +00:00
Pulse Monitor 401aca8ff3 fix: resolve 'no healthy nodes available' storage error (addresses #405)
- Changed cluster client initialization to be optimistic (assume healthy)
- Nodes now start as healthy and are marked unhealthy only on actual failures
- This prevents the issue where all nodes were marked unhealthy during init
- Storage operations can now proceed even if initial health checks fail
- Allows recovery from temporary network or auth issues during startup
2025-09-03 21:53:46 +00:00
Pulse Monitor 8bbfa88cfb docs: update webhook documentation with custom headers info
- Added Custom Headers section explaining the new UI feature
- Updated ntfy instructions with security note about topic names
- Added common header examples table for authentication
- Clarified how to add Bearer tokens and API keys
2025-09-03 16:44:34 +00:00
Pulse Monitor 6d1986271b feat: add custom headers UI for webhook configuration (addresses #412)
- Added custom headers section to webhook configuration UI
- Users can now add, edit, and remove custom headers for authentication
- Updated ntfy instructions to be clearer about adding Authorization headers
- Supports Bearer tokens, API keys, and other custom headers
2025-09-03 16:00:22 +00:00
Pulse Monitor ffc6bdbd7b cleanup: remove unused nodeColors utility that was never implemented 2025-09-03 13:59:06 +00:00
Pulse Monitor b8b791c5ce fix: remove unused import causing TypeScript error 2025-09-03 13:46:15 +00:00
Pulse Monitor 0b20c1b9f5 chore: bump version to v4.13.0 2025-09-03 13:42:00 +00:00
Pulse Monitor 8254b5189e feat: add color generation utility for consistent node identification
- Created nodeColors utility to generate consistent colors based on node names
- Provides a palette of 15 distinct colors that work in light/dark modes
- Can be used for future visual identification needs without conflicting with existing indicators
2025-09-03 13:25:13 +00:00
Pulse Monitor ebcc809b84 fix: make tag indicators immediately update colors on theme switch
Tag indicators next to guest names now properly update their colors when switching between dark and light modes. Previously they would only update on the next data refresh cycle.

- Added reactive DarkModeContext for theme state management
- Updated TagBadges component to use reactive dark mode signal
- Made color calculations reactive to respond to theme changes
2025-09-03 12:39:49 +00:00
Pulse Monitor f9c1d2bf89 fix: use inset box-shadow for storage table alert borders to match NodeSummaryTable 2025-09-03 12:08:36 +00:00
Pulse Monitor 9df8ebf661 fix: adjust storage table padding for alert borders to prevent content gaps 2025-09-03 12:05:52 +00:00
Pulse Monitor 2a2e281b10 fix: resolve storage display issues (addresses #410, #411, #385)
- Fixed shared storage jumping between nodes on each update by using consistent deduplication
- Shared storage now displays with node="cluster" to indicate it's cluster-wide
- Improved error logging when storage API calls fail to help diagnose permission issues
- Added specific warning when all nodes fail to retrieve storage (helps with #385, #411)

The jumping storage issue (#410) was caused by a race condition where parallel goroutines
would report shared storage under whichever node completed first, causing it to randomly
"jump" between nodes on each polling cycle.
2025-09-03 12:00:52 +00:00
Pulse Monitor d09be32de5 fix: improve alert acknowledgment synchronization
- Enhanced WebSocket sync prevention with smarter pending change detection
- Increased protection timeout from 2s to 5s with smart clearing
- Server state now properly checked before clearing pending flags
- Button remains disabled for 1.5s after action to prevent race conditions
- API calls now complete before local state updates
- No local state update on API errors to maintain consistency

This should prevent the acknowledge/unacknowledge flip-flopping issue
2025-09-03 11:34:19 +00:00
Pulse Monitor f0eadd0c7c fix: storage alerts and UI improvements
- Added CheckStorage calls in parallel storage polling (was missing, causing storage alerts to not trigger)
- Fixed node cleanup logic to use alert.Node field directly instead of parsing IDs
- Removed auto-acknowledge on alert click - now only acknowledge button toggles state
- Added unacknowledge button for acknowledged alerts
- Fixed double-toggle issue with acknowledge button using race condition prevention
- Fixed tab menu width in Alerts and Settings pages (changed flex-shrink-0 to flex-1)

addresses #228 (storage alert threshold issue)
2025-09-03 10:04:37 +00:00
Pulse Monitor e3e554a4ad fix: eliminate gaps in table rows with alert borders
- Replace border-left with inset box-shadow for alert indicators
- Prevents unprofessional gaps between background and table edges
- Add alert support to NodeSummaryTable with same gap-free technique
- Generate offline alerts in mock data for testing
- Fix alert matching to use full resource ID for nodes
2025-09-02 22:22:04 +00:00
Pulse Monitor f8de8d71d8 enhance: optimize default schedule settings for production use
- Enable alert cooldown by default (5 minutes) to prevent notification spam
- Enable rate limiting by default (10 alerts/hour) to prevent flooding
- Enable smart grouping by default (30 second window, group by node)
- Keep quiet hours disabled by default (requires user configuration)
- Keep escalation disabled by default (requires user setup)

These defaults provide sensible protection against notification overload
while allowing users to opt-in to more advanced scheduling features
2025-09-02 21:36:46 +00:00
Pulse Monitor 69598d62f6 enhance: improve mock data realism and alert system
- Add dynamic metric fluctuations for VMs and containers in mock data
- Fix alert acknowledgment to dim instead of hide alerts
- Implement unacknowledge functionality with backend persistence
- Simplify alert UI to single-click toggle (remove selection system)
- Add proper hysteresis for alert resolution when metrics drop
- Fix SVG icon boundaries in alert displays
- Add webhook disable toggles for testing without notifications
- Fix frontend directory duplication issue (addresses frontend-modern recreation)
- Improve alert sorting to show most recent first
- Make mock system generate realistic metric changes for proper alert lifecycle
2025-09-02 21:11:01 +00:00
Pulse Monitor 65dff40cb2 improve: show node name with storage when grouped by storage
- removes redundant Node column from storage table
- when grouped by storage, shows node name in gray next to storage name
- when grouped by node, node name already shown in group header
- addresses confusion when multiple nodes have same storage names
2025-09-02 08:44:50 +00:00
Pulse Monitor 7e4b4b6553 improve: enhance mobile responsiveness for Settings and Guest URLs pages
- Fix button overflow on Settings page by making layouts responsive
- Add responsive text sizing and button compacting for mobile
- Make Guest URLs input fields wider (300px min) with horizontal scroll
- Improve tab navigation scrolling on mobile devices
- Better utilize screen space on small devices
2025-09-02 07:33:29 +00:00
Pulse Monitor 1003ddcb67 docs: update CLAUDE.md with development notes 2025-09-01 22:59:32 +00:00
Pulse Monitor 0e060311a1 fix: increase API timeout to prevent deadline exceeded errors (addresses #408)
- Increased default HTTP client timeout from 30s to 60s
- Added CreateHTTPClientWithTimeout function to properly set custom timeouts
- Updated Proxmox and PBS clients to use configured timeout values
- Increased default connection timeout from 45s to 60s in config

This prevents "context deadline exceeded" errors when connecting to slow or overloaded Proxmox/PBS nodes.
2025-09-01 22:59:32 +00:00
Pulse Monitor 50382a89e5 docs: remove ProxmoxVE Helper Script references
The ProxmoxVE Helper Script is no longer the recommended installation method.
Users should use the official install.sh script instead, which supports
creating LXC containers directly on Proxmox hosts.

For existing users confused about updating (like in discussion #407), they
can use 'pct enter' from the Proxmox host to access their container as root.
2025-09-01 22:59:32 +00:00
Pulse Monitor e3a9c4a460 fix: improve binary replacement reliability during updates (addresses #406)
- Add backup/restore mechanism for old binary during updates
- Add explicit error checking for binary copy operations
- Add version verification after installation to detect issues
- Force retry if version mismatch detected after update
- Ensure old binary is properly replaced, not just overwritten

This should resolve issues where updates appear to complete but the old version continues to run, particularly when the binary replacement fails silently.
2025-09-01 22:59:32 +00:00
Pulse Monitor 15333d6f6c docs: add Gotify and ntfy webhook documentation
- added complete setup instructions for Gotify webhooks
- added complete setup instructions for ntfy webhooks
- updated Telegram docs to reflect simplified template-based setup
- clarified that Pulse sends rich formatted notifications automatically
2025-09-01 22:59:32 +00:00
Pulse Monitor 796c4468e8 enhance: make Gotify and ntfy notifications as rich as Discord/Telegram
- added color-coded emoji indicators (🔴/🟡/🟢) for alert levels
- enriched message formatting with better structure and emojis
- improved titles to show resource name and alert type clearly
- ntfy now has dynamic headers for priority and tags based on alert level
- both services now match the detail level of Discord and Telegram
2025-09-01 22:59:32 +00:00
Pulse Monitor af5806122d improve: enhance Gotify notification details and add ntfy to UI (addresses #228)
- improved Gotify template to include resource name and node in message body
- changed title to show resource name instead of generic "Pulse Alert"
- added ntfy service option to frontend webhook configuration UI
- ntfy template was already in backend but missing from frontend selection
2025-09-01 22:59:32 +00:00
Pulse Monitor b9b263011b fix: clarify update settings to indicate manual installation required (addresses #404)
The "Auto-Update" setting was misleading users into thinking Pulse would automatically install updates. Changed the UI text to clarify that:
- The setting only controls automatic checking for updates
- Installation is always manual based on deployment type (ProxmoxVE users type 'update', Docker users pull new image, etc.)
- This is by design for security reasons as documented in CLAUDE.md
2025-09-01 22:59:32 +00:00
Pulse Monitor e72b0c8767 chore: remove temporary auth override used for testing 2025-09-01 22:59:32 +00:00
Pulse Monitor 424d5a9538 fix: change password submit button not working (addresses #396)
- Changed button type from 'button' to 'submit' so it actually submits the form
- This was the root cause - the button looked clickable but had no onClick handler
- Now the form properly submits when clicking Change Password
2025-09-01 22:59:32 +00:00
Pulse Monitor 15a09fc21d fix: change password button not responding to clicks (addresses #396)
- Fixed condition for showing authentication section to include configured state
- Added proper event handling with preventDefault and stopPropagation
- Increased z-index of modal to ensure it appears above other elements
- Added debug logging to help diagnose issues
- Button now works when authentication is configured but not fully loaded
2025-09-01 22:59:32 +00:00
Pulse Monitor 95d201cfc6 feat: improve VM disk stats handling and documentation
- Add DiskStatusReason field to track why disk stats are unavailable
- Show helpful tooltips in UI explaining specific issues:
  - Proxmox 9 API token limitation (401 on guest agent endpoints)
  - Guest agent not installed/running
  - Special filesystems only (Live ISOs)
  - Permission issues
- Add comprehensive troubleshooting guide (docs/VM_DISK_STATS_TROUBLESHOOTING.md)
- Document that API tokens cannot access guest agent data on PVE 9
- Tested and confirmed: only password/cookie auth works for guest agent on PVE 9
- Update README with quick reference to VM disk stats issue

This addresses issues #348, #367, and #71 by clearly explaining the root cause
(Proxmox API limitation) and providing actionable guidance to users.
2025-09-01 10:16:02 +00:00
Pulse Monitor 87fc4f651e fix: improve node disk stats reliability when GetNodeStatus fails (addresses #402)
- Ensure disk metrics from /nodes endpoint are preserved when GetNodeStatus fails
- Add better fallback logic to prevent showing 0% or '-' for disk usage
- Improve logging to distinguish between rootfs and /nodes endpoint metrics
- Handle cases where neither rootfs nor valid node disk data is available

This fixes the regression introduced in v4.12.1 where disk stats would show as
'-' when GetNodeStatus failed due to network issues or rate limiting
2025-08-31 22:43:32 +00:00
Pulse Monitor c0c5a231e3 chore: bump version to v4.12.1 2025-08-31 21:29:25 +00:00
Pulse Monitor 99139a20c6 fix: improve install script reliability in unprivileged containers (addresses #386)
- Add timeout command wrapper around all curl calls to prevent hanging
- Add multiple fallback mechanisms for GitHub API failures
- Use fallback to known stable version if all methods fail
- Add proper timeouts to prevent indefinite waiting
- Improve error handling to proceed when version verification fails

The script now handles network issues, rate limiting, and container
restrictions more gracefully, ensuring installation completes even
in restricted environments.
2025-08-31 20:34:09 +00:00
Pulse Monitor 84b4c02e4d docs: improve Telegram webhook documentation formatting
- Add proper JSON code block formatting for the template
- Keep all improvements from PR #401 by @rschoell
- Ensure consistent formatting throughout the document
2025-08-31 20:23:02 +00:00
Pulse Monitor a8180f392b docs: update Telegram webhook configuration instructions (addresses #305)
- Remove chat_id from URL (should be in JSON payload)
- Add requirement to select 'Telegram Bot' service type
- Include custom payload template example
- Clarify that chat_id goes in the JSON body, not URL params
2025-08-31 20:22:37 +00:00
rcourtman d1e27e0c7a Merge pull request #401 from rschoell/patch-1
Update WEBHOOKS.md
2025-08-31 21:22:26 +01:00