Commit graph

243 commits

Author SHA1 Message Date
Pulse Monitor
5282bfef2f cleanup: remove debug logging from email config components 2025-08-12 09:38:10 +00:00
Pulse Monitor
aeb98eb86c fix: email config field mapping issue
- Frontend was looking for smtpHost/smtpPort but backend returns server/port
- Fixed field mapping in NotificationsAPI to use correct field names
- Email SMTP server now properly displays saved value instead of placeholder
2025-08-12 09:36:04 +00:00
Pulse Monitor
5c1dc6c880 fix: email config display and persistence issues
- Fixed startTLS field name inconsistency (was starttls, now startTLS)
- Added automatic reload of email config when switching to Notifications tab
- Email config now properly displays saved SMTP server instead of placeholder
- Ensures fresh data is loaded when user navigates to email settings
2025-08-12 09:15:20 +00:00
Pulse Monitor
46a697613a fix: remove sensitive data from logs
Updated logging to exclude request bodies that may contain passwords
or other sensitive information. Now only logs metadata about requests
without exposing actual credentials.
2025-08-12 08:41:17 +00:00
Pulse Monitor
7dbcb5461c fix: addresses #299 - email notifications not working
Fixed two critical issues with email notifications:
1. Test email API now returns errors properly instead of always showing success
2. Added timeouts to SMTP connections to prevent hanging (10s dial, 30s overall)

The root cause of users not receiving emails was that errors were being
silently logged instead of returned to the API, making it appear successful
when it wasn't. SMTP connections could also hang indefinitely on unreachable
servers.

Note: API uses "server" and "port" JSON fields, not "smtpHost"/"smtpPort"
2025-08-12 08:04:04 +00:00
Pulse Monitor
768d60739b fix: complete fix for #296 - PBS edit now shows PBS form, not PVE form
Ensures each modal (PVE/PBS) only receives editingNode if the node type
matches. This prevents PBS edit from showing PVE form and vice versa.

Both issues from #296 are now addressed:
1. PBS forms no longer get contaminated with PVE data (previous commit)
2. PBS edit now correctly shows PBS form instead of PVE form (this commit)
2025-08-12 07:40:07 +00:00
Pulse Monitor
443e3093a1 fix: addresses #296 - PBS form contamination after canceling PVE form
Separated PVE and PBS modals into distinct component instances to prevent
form state contamination. Each node type now has its own Show component
that mounts/unmounts independently, ensuring clean form state.

Also added resetKey tracking and node type change detection for
additional form reset triggers.

Verified with automated tests that PBS forms no longer show data
from previously canceled PVE forms.
2025-08-12 07:35:11 +00:00
Pulse Monitor
fdb18fb431 fix: PBS form contamination issue fully resolved (addresses #296)
Fixed the remaining contamination issue where PBS forms would retain PVE data
after canceling a PVE node addition. The form now properly resets when opening
the modal for adding a new node.

Two fixes were needed:
1. Set currentNodeType when editing any node (previous commit)
2. Clear form data when opening modal for new nodes (this commit)

Both issues reported by krom are now resolved:
- PBS forms no longer show PVE data
- Editing PBS nodes properly populates the form
2025-08-11 21:35:42 +00:00
Pulse Monitor
25141d7cde fix: PBS form editing now correctly sets node type (addresses #296)
The issue was that when editing a PBS node, the currentNodeType wasn't being set,
causing the modal to not populate the form correctly. Now setCurrentNodeType is
called with the node's type when editing any node.

This ensures:
- PBS forms don't get contaminated with PVE data
- Editing PBS nodes properly populates the form with PBS data
- No cross-contamination between node types
2025-08-11 20:35:48 +00:00
Pulse Monitor
b5490e6dde docs: add all available environment variables to Docker Compose example
Listed all env vars with descriptions and defaults, commented out for easy enabling.
Users can now discover and configure all options without checking separate docs.
2025-08-11 17:51:37 +00:00
Pulse Monitor
5b6b7d4479 docs: improve README layout and remove outdated v3 migration warning
- Move sponsor badges to dedicated 'Support This Project' section
- Remove v3 migration warning (no longer needed)
- Clean up badge organization
- Make tagline more prominent
2025-08-11 17:00:15 +00:00
Pulse Monitor
70011fd907 fix: restore sponsor links to README
Addresses accidental removal of GitHub Sponsors and Ko-fi badges
2025-08-11 16:52:23 +00:00
Pulse Monitor
c111738825 chore: bump version to v4.2.0 2025-08-11 16:05:09 +00:00
Pulse Monitor
252dec2c75 fix: improve alert threshold override persistence (addresses #295)
Frontend improvements:
- Store raw override config separately to handle delayed WebSocket state loading
- Use createEffect to reprocess overrides when WebSocket state becomes available
- Properly maintain raw config when adding/updating/removing overrides
- Ensures overrides don't disappear when switching tabs or navigating

This addresses the issue where custom thresholds would disappear after navigating
away from the tab, which was caused by the WebSocket state not being fully loaded
when the initial config was processed.
2025-08-11 15:42:16 +00:00
Pulse Monitor
9f6a3d1b5f fix: multiple UI and configuration issues (addresses #295, #296)
Frontend fixes:
- Fixed VM thresholds incorrectly showing as 'CT' in alerts UI (issue #295)
- Fixed threshold slider not reaching 0% and 100% edges (issue #295)
- Fixed PBS form auto-filling with PVE settings (issue #296)
- Fixed email config property mapping (server/port instead of smtpHost/smtpPort)

Backend fixes:
- Updated EmailConfig struct to use 'server' and 'port' JSON tags for consistency
- Added 'provider' and 'startTLS' fields to EmailConfig
- Fixed PORT env var to correctly set FrontendPort instead of BackendPort
- Changed default log level from Debug to Info

All changes tested and verified working correctly.
2025-08-11 15:29:53 +00:00
Pulse Monitor
35a610a7dc docs: correct WebSocket information - not specific to v4
- WebSockets have been used in all versions, not just v4
- Removed misleading 'v4' references in proxy documentation
2025-08-11 14:50:59 +00:00
Pulse Monitor
78f849b4de docs: add comprehensive reverse proxy configuration guide
- Added detailed reverse proxy guide for nginx, Caddy, Apache, Traefik, HAProxy, and Cloudflare Tunnel
- Emphasized WebSocket requirement for v4
- Added testing instructions and troubleshooting tips
- Updated README and CONFIGURATION docs to reference the new guide
- Addresses user feedback from issue #244 about WebSocket requirement
2025-08-11 14:50:21 +00:00
Pulse Monitor
631017a906 fix: storage tab node row not extending full width
- Fixed colspan from 7 to 8 to account for all columns in node view
- Node header row now extends to the end of the table
2025-08-11 14:24:03 +00:00
Pulse Monitor
b2a8a71ad8 fix: alert threshold UI bugs (issue #295)
- VMs now properly display as "VM" instead of "CT" in custom thresholds
- Slider thumb now reaches 0% and 100% edges correctly
- Custom rules and schedule changes now trigger unsaved changes warning
- Fixed missing setHasUnsavedChanges calls for override operations
2025-08-11 14:20:42 +00:00
Pulse Monitor
378ebcb250 Major improvements to security, alerts, and ease of use
Security enhancements:
- Fixed critical issue: PBS tokens no longer logged in plaintext
- PVE tokens now properly masked in all log outputs
- Enhanced token security documentation

Alert system fixes:
- Fixed storage alerts not working due to threshold being 0
- Added automatic defaults preservation for alert thresholds
- Storage alerts now properly trigger at 85% usage

Node management improvements:
- Fixed node deletion causing 'Node not found' errors
- Added instant discovery refresh when nodes are deleted
- Added manual refresh buttons for discovery
- Fixed PBS token cleanup in auto-registration scripts
- Fixed /dev/tty errors when running scripts in Docker containers

Bug fixes:
- Fixed CPU MHz field type mismatch causing JSON unmarshal errors
- Suppressed non-critical container snapshot API errors
- Fixed auto-registration using Docker internal IPs instead of actual host IPs

Documentation updates:
- Added comprehensive security documentation
- Streamlined setup documentation focusing on ease of use
- Removed marketing language and consolidated repetitive content

Frontend improvements:
- Added WebSocket support for real-time node updates
- Added discovery refresh buttons in Settings
- Improved node deletion feedback
2025-08-11 13:59:58 +00:00
Pulse Monitor
101a263f2d CRITICAL SECURITY FIX: stop logging PBS API tokens in plain text
- remove token value from debug logs
- only log user, realm, and token name for debugging
- prevents credential exposure in log files
2025-08-11 10:45:03 +00:00
Pulse Monitor
161bbf5ec4 fix: exclude ct templates and isos from backup tab (fixes #265)
- filter out vztmpl (container templates) from backup list
- filter out iso files from backup list
- only show actual vm/container backups in the backup tab
- remove unnecessary checks for template/iso content types
2025-08-11 10:13:12 +00:00
Pulse Monitor
0491abf885 fix: prevent cpu alerts for non-running vms and containers (fixes #273)
- check if vm/container status is "running" before using cpu value
- set cpu to 0 for stopped, paused, suspended states
- prevents false high cpu alerts for offline vms
- handles all non-running states, not just "stopped"
2025-08-11 10:08:41 +00:00
Pulse Monitor
2a965b2a05 fix: ensure all webhook services use proper payload formats
- extend webhook template support to all services (slack, teams, pagerduty)
- properly detect service type and apply correct template
- add pagerduty routing_key support from headers
- fallback to generic json only when no template exists
- handle both individual and grouped alerts for all services
2025-08-11 09:49:59 +00:00
Pulse Monitor
94a74fdcfe fix: telegram webhook payload format and pbs connection issues (fixes #294)
- add proper telegram bot api support with chat_id and text fields
- fix frontend pbs red dot display (was checking 'error' instead of 'unhealthy')
- fix qemu guest agent memory reporting (fallback to mem when freemem is 0)
- extract chat_id from telegram webhook urls when present
2025-08-11 09:38:09 +00:00
Pulse Monitor
2f2ab19c0b fix: QEMU guest agent VMs now show memory usage correctly
- Fall back to vmStatus.Mem when guest agent doesn't report FreeMem
- Fixes issue where VMs with guest agent showed 0% memory usage
- Addresses issue #294
2025-08-11 08:45:49 +00:00
Pulse Monitor
c7a96f9d39 chore: bump version to v4.1.8 2025-08-11 07:57:50 +00:00
Pulse Monitor
41a7c830bf docs: update configuration and FAQ for recent fixes
- Document Docker persistence in /data volume
- Add PBS HTTPS requirement to FAQ troubleshooting
- Clarify data directory usage for encryption keys
- Update file location documentation for Docker vs standard installs
2025-08-11 07:55:40 +00:00
Pulse Monitor
6db0fbbc1a fix: PBS and PVE red dot issue with connectionHealth status
- Fixed mismatch between backend (unhealthy) and frontend (error)
- Both PVE and PBS nodes now correctly show red dot when unhealthy
- Fixes issue #293 where PBS showed red dot despite being connected
2025-08-11 07:53:24 +00:00
Pulse Monitor
e40304be27 improve PBS HTTP/HTTPS handling and error messages
- Add automatic HTTPS defaulting when no protocol specified
- Warn users when using HTTP for PBS (which requires HTTPS)
- Improve error messages to suggest HTTPS when HTTP fails
- Add UI hints about PBS requiring HTTPS on port 8007
- Fix placeholder to show correct default port for PBS
2025-08-10 22:45:59 +00:00
Pulse Monitor
6922a79d59 fix: reload alert and notification configs after import
- Import was saving configs to disk but not updating in-memory state
- Added explicit reloading of alert thresholds after import
- Added explicit reloading of webhooks after import
- Added explicit reloading of email config after import
- Settings now show immediately in UI without requiring restart

Fixes #291 where imported alert thresholds and webhooks weren't
visible until after service restart
2025-08-10 22:29:14 +00:00
Pulse Monitor
30fe499437 improve: Docker persistence fix with better error handling
- Use consistent utils.GetDataDir() helper instead of duplicating logic
- Handle migration failures gracefully - log warnings but continue using old key
- Add detailed logging for migration with source and destination paths
- Prevent unnecessary migration when paths are identical
- Improve error messages for debugging

Addresses review feedback on the Docker persistence fix
2025-08-10 22:09:48 +00:00
Pulse Monitor
9587528157 fix: Docker persistence by storing encryption key in data volume
- Move encryption key from /etc/pulse to PULSE_DATA_DIR (/data in Docker)
- Add automatic migration for existing installations
- Key now persists across container restarts when using volume mount
- Maintains backward compatibility for non-Docker installations

Fixes #290 reported by da99Beast where Docker containers lost
configuration on restart due to encryption key being regenerated
2025-08-10 22:04:14 +00:00
Pulse Monitor
d522dfca5e fix: API token authentication for Docker users
- Add UI modal to prompt for API token when required
- Detect and handle invalid/expired tokens automatically
- Clear invalid tokens and re-prompt user
- Add ability to clear stored tokens from browser
- Fix race condition in modal retry logic
- Improve error messages for auth failures
- Handle both export and import authentication consistently
- Track operation source to ensure correct retry behavior

Fixes issue reported by da99Beast where Docker users with API_TOKEN
environment variable couldn't authenticate for export/import operations
2025-08-10 21:44:10 +00:00
Pulse Monitor
256d168d54 fix: update hardcoded fallback version to 4.1.7
The binary was using 4.1.6 as the fallback version when VERSION file
wasn't found, causing version mismatches in some installations
2025-08-10 20:49:29 +00:00
Pulse Monitor
f70bdcad8b chore: bump version to v4.1.7 2025-08-10 20:03:21 +00:00
Pulse Monitor
55e0190777 fix: manual node setup 'Node ID Required' error
Fixed issue where discovered nodes and manual node setup would incorrectly
call updateNode instead of addNode. The problem was that discovered nodes
were set with an empty string ID, which made the code think it was editing
an existing node.

Now properly checks for both editingNode existence AND a valid ID before
deciding whether to update or add.

Fixes #289
2025-08-10 20:02:28 +00:00
Pulse Monitor
1414779609 docs: add DISCOVERY_SUBNET configuration documentation
- Added DISCOVERY_SUBNET to available environment variables list
- Added Docker-specific network discovery configuration section
- Updated README with Docker network discovery examples
- Added subnet configuration to Docker Compose example
2025-08-10 19:54:15 +00:00
Pulse Monitor
068322bb45 feat: add DISCOVERY_SUBNET environment variable support for Docker network discovery configuration 2025-08-10 19:44:31 +00:00
Pulse Monitor
ba6bf68acc fix: update system to handle new tarball structure and permission issues
- Support both old (root) and new (bin/) tarball structures
- Use writable directories for temp and backup files (data dir instead of /tmp)
- Fixes update failures for users on v4.1.5 and earlier
2025-08-10 19:38:40 +00:00
Pulse Monitor
14dcdfc4d6 fix: Discord webhook avatar URLs pointing to wrong repository 2025-08-10 19:23:31 +00:00
Pulse Monitor
8eabdf8212 chore: bump version to v4.1.6
Preparing for v4.1.6 release with critical bug fixes
2025-08-10 18:58:08 +00:00
Pulse Monitor
eef3ebf354 fix: critical bugs in v4.1.5
- Fixed hardcoded version fallback showing 4.1.1 instead of current version
- Fixed install script syntax error that prevented fresh installations
- Identified root cause of Docker persistence issue (notification UI not saving)
- Identified missing save functionality in frontend notification settings

Issues addressed: #277, #278, #282
2025-08-10 18:49:51 +00:00
Pulse Monitor
dca995b118 chore: bump version to v4.1.5 2025-08-10 17:49:19 +00:00
Pulse Monitor
f343007378 fix: remove disabled state from export/import buttons
The buttons were incorrectly disabled due to inverted logic. They now work properly regardless of security configuration. Also improved error messages to show the actual error from the API.
2025-08-10 17:44:19 +00:00
Pulse Monitor
20c72387ba fix: improve export error messages in UI
- Added clearer error message when export fails due to missing auth
- UI now explicitly tells users to set API_TOKEN or ALLOW_UNPROTECTED_EXPORT
- Addresses issue #286 where error wasn't clear
2025-08-10 17:09:43 +00:00
Pulse Monitor
1fbd0356e3 chore: bump version to v4.1.4 2025-08-10 14:51:55 +00:00
Pulse Monitor
059ef93c90 fix: tarball structure to extract files to bin/ directory
- Modified build-release.sh to create tarballs with bin/ directory structure
- Updated install.sh to handle both old (flat) and new (bin/) structures
- Files now extract to correct locations for community scripts
- Fixes issue #276 where community scripts couldn't update properly
2025-08-10 14:51:42 +00:00
Pulse Monitor
f4a7a8d4c1 chore: bump version to v4.1.3 2025-08-10 10:59:43 +00:00
Pulse Monitor
fbf8e5f1ce fix: RAM usage calculation and webhook test functionality
- Fixed incorrect RAM usage display for VMs without guest agent (issue #280)
  - VMs without guest agent now show 0% usage instead of 100%
  - Only show actual usage when guest agent provides FreeMem data
  - Containers continue to show accurate usage as before

- Fixed webhook test functionality (issue #279)
  - Added proper webhook ID handling in test notification endpoint
  - Created SendTestWebhook method to test specific webhooks
  - Frontend can now successfully trigger webhook tests
2025-08-10 10:59:26 +00:00