Commit graph

271 commits

Author SHA1 Message Date
Pulse Monitor
b968d91dcd feat: include guest metadata in config export/import
- guest URLs are now backed up with config export
- restored on import to preserve custom URLs across migrations
- stored in plain text (not encrypted) as they're just service URLs, not credentials
- import failures for guest metadata are non-fatal (logged as warnings)
2025-08-12 16:54:18 +00:00
Pulse Monitor
4166a56afd fix: prevent URL editor modal from closing on WebSocket updates
- moved modal state to Dashboard component level
- removed local modal state from GuestRow
- modal now persists through API updates and component re-renders
- passed openUrlEditor callback from Dashboard to GuestRow components
2025-08-12 16:41:15 +00:00
Pulse Monitor
b9a768b5e6 feat: add per-guest custom URL functionality
- guests can now have custom URLs that make their names clickable
- added metadata store for persisting guest metadata to JSON files
- added API endpoints for managing guest metadata
- integrated edit button in dashboard to set/edit custom URLs
- guest names become clickable links when custom URL is set
2025-08-12 16:35:14 +00:00
Pulse Monitor
782651e24e feat: make node names in summary cards clickable
- Node names in the summary cards at the top now link to Proxmox web interface
- Matches the behavior of node names in the table rows below
- Uses same hover effect (blue color) for consistency
2025-08-12 16:19:02 +00:00
Pulse Monitor
78381497c7 fix: add missing Telegram option in webhook service dropdown
- Telegram was available in backend but missing from frontend dropdown
- Added 'telegram' to service list and display name mapping
- Fixes issue where users couldn't select Telegram as webhook service
2025-08-12 15:42:05 +00:00
Pulse Monitor
75f4b74b83 feat: implement API token management UI (addresses #302)
- Add interactive API token management in Settings > Security tab
- Users can now generate, view, regenerate, and delete API tokens from the UI
- Tokens are persisted in system.json and survive restarts
- Environment variable API_TOKEN still takes precedence for backward compatibility
- Proper authentication enforcement when tokens are configured
- Secure token generation using crypto/rand (32 bytes, hex encoded)
- Clean UI with copy-to-clipboard functionality for newly generated tokens
2025-08-12 15:32:23 +00:00
Pulse Monitor
ef3789e9e0 feat: add RC badge to header for release candidate versions
The Pulse logo now displays an orange "RC" badge when running a release
candidate version. This helps users identify when they're testing pre-release
versions.

- Backend now detects RC versions and sets channel field accordingly
- Frontend displays RC badge next to Pulse logo when channel is "rc"
- Works for both git-based and VERSION file-based builds
2025-08-12 14:47:21 +00:00
Pulse Monitor
e42c1ab4e8 chore: bump version to v4.3.1-rc.1 2025-08-12 14:29:37 +00:00
Pulse Monitor
8492b0932d fix: dashboard now uses actual configured host URLs for node links
addresses #306 - The dashboard and storage views were hardcoding port 8006 for node links,
but now they properly use the host URLs from the node configuration. This ensures users
are redirected to the correct URL when clicking on node names, respecting custom ports
and protocols configured in the settings.

- Added host field to Node struct in Go models
- Updated monitor.go to populate host field from instance config
- Added host field to TypeScript Node interface
- Modified Dashboard and Storage components to use nodeHostMap for correct URLs
- Falls back to old behavior if host field is not available
2025-08-12 14:28:19 +00:00
Pulse Monitor
b77df2f2f1 feat: add custom webhook payload templates and fix Telegram chat_id handling
- Add custom JSON payload template support for generic webhooks
- Users can now define custom webhook formats with Go template syntax
- Fix Telegram webhook issue where chat_id in URL caused 400 errors
- Automatically strip chat_id from URL and place in JSON body for Telegram
- Add comprehensive webhook documentation with examples
- Update API documentation with webhook endpoints

Addresses #305
2025-08-12 14:03:13 +00:00
Pulse Monitor
6765db9b13 chore: bump version to v4.3.0 2025-08-12 13:09:09 +00:00
Pulse Monitor
cf3fefabda fix: correct webhook icon URLs and add release notes
- Fix Discord webhook templates to use logo.svg instead of non-existent favicon.svg
- Add comprehensive release notes for v4.3.0 about embedded frontend breaking change
- Document migration path and benefits of embedded frontend

The embedded frontend is a significant architectural improvement that eliminates
path-related issues but requires clear communication to users about the change.
2025-08-12 12:59:02 +00:00
Pulse Monitor
d5d359ce45 fix: update systems to work with embedded frontend
- Fix auto-updater to handle single-binary structure
- Fix Docker build to copy frontend before Go compilation
- Add development script for frontend rebuilds
- Remove unnecessary frontend directory copying in updater

The embedded frontend change simplifies deployment but required
updates to various build and update systems.
2025-08-12 12:52:27 +00:00
Pulse Monitor
7a6f5f9ae4 chore: add embedded frontend directory to gitignore 2025-08-12 12:46:13 +00:00
Pulse Monitor
5d50fe06da feat: embed frontend in Go binary for simplified deployment
Addresses #304 - Eliminates redirect loops and path issues by embedding
the frontend directly in the Go binary using go:embed

- Frontend is now embedded at compile time, no separate files needed
- Simplified tarball structure - just the binary and config files
- No more path searching or frontend directory issues
- Works consistently across all installation methods
- Smaller deployment footprint and simpler installation

This change makes Pulse a true single-binary deployment, eliminating
the complexity of managing separate frontend files and the issues that
arose from different installation structures.
2025-08-12 12:45:57 +00:00
Pulse Monitor
8431a49329 fix: improve frontend file discovery to prevent redirect loops
- Add multiple search paths for frontend files
- Check parent directories when binary is in bin/ subdirectory
- Support both tarball extraction and installed structures
- Fixes issue #304 where manual tarball extraction caused redirect loops
- Maintains compatibility with community scripts
2025-08-12 12:33:40 +00:00
Pulse Monitor
bf7518e428 chore: remove temporary Docker Hub README
- Docker Hub description has been updated via docker-pushrm
- No need to keep this file in the repository
2025-08-12 12:24:24 +00:00
Pulse Monitor
b3a4bb5863 docs: refine Docker Hub README for professional tone
- Remove excessive emojis
- Match professional tone of main repository README
- Use technical language appropriately
- Improve structure and clarity
- Focus on technical details over marketing language
2025-08-12 12:19:12 +00:00
Pulse Monitor
36c34fecc7 docs: create updated Docker Hub README
- Modern, comprehensive overview for Docker Hub
- Clear quick start instructions
- Feature highlights with emojis
- Security information
- Multi-arch support details
- Current version info (v4.2.1)
- Proper setup instructions with auto-setup script
- Alert configuration overview
2025-08-12 12:15:26 +00:00
Pulse Monitor
6239106dc2 chore: remove more test artifacts and old screenshots
- Delete old screenshots directory (proper ones are in docs/images)
- Remove .devdata test directory
- Update .gitignore to exclude these directories
- Keep repository focused on production code only
2025-08-12 11:26:28 +00:00
Pulse Monitor
c6716cd0c2 chore: clean up repository and remove test files
- Remove all temporary test files and documentation
- Delete testing-tools directory with old screenshots and scripts
- Remove stray package.json files from root
- Update .gitignore to prevent test files from being committed
- Keep repository clean and focused on production code
2025-08-12 11:25:32 +00:00
Pulse Monitor
a91bd42b74 docs: comprehensive documentation updates
- Add registration tokens documentation to SECURITY.md
- Add email configuration guide to README.md
- Create comprehensive API.md with all endpoints documented
- Include examples for bash, PowerShell, and Python API usage
- Document WebSocket connection for real-time updates
- Add rate limiting information and error response formats
2025-08-12 11:23:26 +00:00
Florian Bussmann
0c167c92ac docs: update API endpoints (#303) 2025-08-12 12:11:45 +01:00
Pulse Monitor
1cdc6a011c chore: bump version to v4.2.1 2025-08-12 10:52:51 +00:00
Pulse Monitor
6316f2c1fe docs: add pre-release verification report for v4.2.1 2025-08-12 10:51:50 +00:00
Pulse Monitor
b68ee634e9 fix: PBS edit form now correctly loads token authentication data
- Keep full token format (user@realm\!token-name) in edit form for PBS nodes
- Properly detect token vs password authentication based on hasToken/hasPassword fields
- Extract username from token format for internal use only
- Addresses issue #296 follow-up where PBS edit forms weren't populated correctly
2025-08-12 10:43:40 +00:00
Pulse Monitor
96559875f8 fix: preserve edit state during UI refresh for threshold overrides (#295)
- Editing state is now tracked at parent component level
- Edit state persists across WebSocket updates and re-renders
- Save/Cancel buttons no longer disappear during 5-second refresh cycle
- Fixes issue where users lost ability to save threshold changes
2025-08-12 10:11:06 +00:00
Pulse Monitor
c62952e070 fix: email test now uses saved password when not provided
- Test email button now works without re-entering password
- Backend uses saved password if test request has empty password
- Fixes authentication error when testing email notifications
2025-08-12 09:47:05 +00:00
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