Commit Graph

462 Commits

Author SHA1 Message Date
Pulse Monitor e2a82af71e improve: make Guest URLs table rows more compact
- Reduced padding from py-3 to py-1.5 for data rows
- Reduced header padding from py-3 to py-2
- Input fields now have py-0.5 instead of py-1
- More guests visible without scrolling
2025-08-20 19:25:41 +00:00
Pulse Monitor d4eebde0fe improve: use separate columns for guest info in URL settings
- Name, Type, VMID, and Node now in separate columns
- Prevents long text from making rows too wide
- Cleaner, more organized table layout
- Matches the style of the main dashboard table
2025-08-20 19:21:49 +00:00
Pulse Monitor ea0e0982c0 simplify: use single URL field instead of protocol/host/port fields
- Users can now paste complete URLs directly
- Much simpler and more intuitive
- Maintains backward compatibility with old format
- Example: just paste 'https://192.168.1.100:8006'
2025-08-20 19:18:15 +00:00
Pulse Monitor 1ed8ff1596 refactor: move guest URL management from dashboard to Settings
- Remove inline URL editing from dashboard guest rows
- Create dedicated Guest URLs section in Settings with structured input
- Support protocol (HTTP/HTTPS), host, and port fields separately
- Clean up dashboard by removing unnecessary edit icons
- Guest names remain clickable when URLs are configured
2025-08-20 19:04:42 +00:00
Pulse Monitor 12cdf8d369 feat: add disable alerts option for individual guests
- Add ability to completely disable alerts for specific guests in Custom Overrides
- Refactor override editing to use single form instead of inline editing
- Add dashboard indicators for guests with custom overrides (blue cog for custom thresholds, grey bell-slash for disabled)
- Remove complex Proxmox tag-based alert control system in favor of simpler UI controls
- Improve layout and UX for alert override management
2025-08-20 18:51:22 +00:00
Pulse Monitor 9d74cadc68 fix: stop service before updating binary to avoid 'Text file busy' error
Move service stop to happen before attempting to copy the binary file.
This prevents the error when the binary is still in use by the running service.
Added 2-second delay to ensure process fully releases the file.
2025-08-20 16:00:36 +00:00
Pulse Monitor d775916217 improve: handle both pulse and pulse-backend service names gracefully
- ProxmoxVE community script uses pulse-backend.service
- Our install script now detects and preserves existing service name
- Removed pulse-backend.service from pre-v4 detection (it's used by v4 too)
- Install script stops the correct service during upgrades
- New installs use 'pulse', existing use whatever they have

This ensures compatibility with all deployment methods without breaking changes.
2025-08-20 15:57:19 +00:00
Pulse Monitor 129907737e fix: remove pulse-backend.service from pre-v4 detection
The service name pulse-backend.service is used by both v4 and pre-v4 installations,
so it's not a reliable indicator. Only check for Node.js artifacts (package.json,
node_modules, etc) which are exclusive to pre-v4 versions.
2025-08-20 15:51:56 +00:00
Pulse Monitor 2d5c2d7be2 chore: bump version to v4.5.2-rc.1 2025-08-20 15:34:22 +00:00
Pulse Monitor 35695891c4 improve: make quick tip dismissible in alerts tab
- Add dismissible X button to the Quick Tip in Alerts overview
- Persist dismissed state in localStorage
- Tip can be dismissed and won't show again on page refresh
2025-08-20 15:33:24 +00:00
Pulse Monitor dfcfc4f857 docs: clarify difference between pulse-no-alerts and pulse-monitor-only
- pulse-no-alerts: completely silent, no alerts generated at all
- pulse-monitor-only: alerts show in UI for manual checking, but no notifications sent
- updated descriptions to make the distinction clearer
- improved use case examples to show when to use each
2025-08-20 14:54:38 +00:00
Pulse Monitor 6e6fc1b03a feat: add UI hints about Proxmox tag-based alert control
- added prominent help box in Alerts overview showing available tags
- updated Custom Rules tab to show tags in priority order
- made feature discoverable without reading documentation
- emphasized use cases (dev VMs, TrueNAS, maintenance windows)
2025-08-20 14:51:26 +00:00
Pulse Monitor 496861147d docs: reframe tags as direct VM control for both permanent and temporary use
removed incorrect 'temporary override' framing - users want permanent control for VMs with special needs (TrueNAS, Samba, Frigate, etc). tags are now presented as direct per-VM control that can be used for both permanent configuration and temporary needs

key insight: tags let users say 'this specific VM is special' vs custom rules for patterns
2025-08-20 14:41:34 +00:00
Pulse Monitor e5f830f1c1 refactor: clarify tags as operational overrides complementing custom rules
- updated documentation to clearly distinguish between:
  - Custom Rules: permanent alert policies configured in UI
  - Tags: temporary operational overrides applied in Proxmox
- improved log messages to indicate tags are temporary overrides
- added clear use cases and best practices for each approach
- emphasized that tags complement (not replace) custom rules
2025-08-20 14:37:00 +00:00
Pulse Monitor f1a3d9ff7b fix: make pulse-relaxed tag use fixed thresholds instead of additive
changed pulse-relaxed behavior to override with fixed values (95% CPU/RAM, 98% disk) rather than adding to existing thresholds. this avoids confusing interactions with custom alert rules and provides more predictable behavior

also updated docs to clarify the priority order of tags vs custom rules
2025-08-20 14:16:06 +00:00
Pulse Monitor 215ce78542 docs: add alert suppression using VM/CT tags
documented the new tag-based alert suppression feature that allows controlling alert behavior per VM/container without UI changes. includes pulse-no-alerts, pulse-monitor-only, and pulse-relaxed tags with examples
2025-08-20 14:12:22 +00:00
Pulse Monitor 23449e7065 fix: show MB/s instead of % for disk I/O alerts
addresses #336 - diskRead/diskWrite/networkIn/networkOut metrics are measured in MB/s not percentages, so alert messages now correctly show "X MB/s" instead of "X%"
2025-08-20 14:09:50 +00:00
Pulse Monitor 986ca98eea fix: convert CPU values to percentage for alert thresholds
CPU values from Proxmox are decimals (0.99 = 99%) but were being compared
to percentage thresholds (80), causing alerts to never trigger.
2025-08-20 12:06:26 +00:00
Pulse Monitor 23b4284a0e feat: implement alert suppression via VM/CT tags
- pulse-no-alerts: suppress all alerts for VM/CT
- pulse-monitor-only: show alerts in UI but skip email notifications
- pulse-relaxed: use relaxed thresholds (+15% for CPU/memory, +10% for disk)

Tags are read from Proxmox VM/CT configuration and applied during alert checks.
This provides a simple way to manage alert behavior without adding UI complexity.
2025-08-20 11:55:01 +00:00
Pulse Monitor 0bfb173ef4 fix: load version info when DISABLE_AUTH is enabled
- Version was showing 'loading...' when auth was disabled
- Now properly fetches version even when skipping authentication
2025-08-20 10:25:45 +00:00
Pulse Monitor 3401ee63d7 chore: bump version to v4.5.1 2025-08-20 10:05:04 +00:00
Pulse Monitor 97253dbb14 fix: frontend now properly handles DISABLE_AUTH and skips login screen
- Frontend checks for disabled: true in security status
- When auth is disabled, goes straight to dashboard
- Fixes issue where login screen showed even with DISABLE_AUTH=true
2025-08-20 10:00:05 +00:00
Pulse Monitor 55a78df290 chore: bump version to v4.5.0 2025-08-20 08:44:47 +00:00
Pulse Monitor d58d52b238 feat: add DISABLE_AUTH environment variable for proxy authentication
- Added DISABLE_AUTH env var to completely bypass authentication
- Useful for reverse proxy setups (Authentik, Authelia, etc.)
- Updated documentation in CONFIGURATION.md and REVERSE_PROXY.md
- Fixed security tests to handle auth disabled state
2025-08-20 08:43:20 +00:00
Pulse Monitor 46bb44d792 improve: comprehensive type safety improvements across codebase
Frontend (TypeScript):
- Eliminated all 'any' types (7 → 0)
- Added proper types for event system with generics
- Fixed event data interfaces with specific types
- Replaced any with unknown where appropriate

Backend (Go):
- Created central types.go with 30+ typed API structures
- Eliminated all interface{} in /internal/api package (158 → 0)
- Replaced map[string]interface{} with typed structs:
  - ChartResponse, VMChartData, NodeChartData, StorageChartData
  - DiagnosticsInfo with NodeDetails, ClusterInfo, PBSDetails
  - StorageChartsResponse with StorageMetrics
- Improved compile-time type safety for all API responses

Benefits:
- Better IDE support and autocomplete
- Compile-time error detection
- Clearer API contracts
- Improved maintainability

All tests passing, service running successfully with typed code.
2025-08-19 21:32:44 +00:00
Pulse Monitor e5c3721556 chore: bump version to v4.5.0-rc.4 and add comprehensive test suite
- Added test-release.sh for core functionality testing
- Added test-edge-cases.sh for URL and header edge cases
- Added test-proxy-scenarios.sh for reverse proxy testing
- Added test-security.sh for security vulnerability testing
- Added test-installation-methods.sh for deployment validation
- Added test-all.sh master script to run all tests
- These tests would have caught issue #334 and prevent similar issues
2025-08-19 19:34:54 +00:00
Pulse Monitor fc01429cf1 fix: prevent 301 redirect to relative path (./) when accessing root without trailing slash (addresses #334)
- Replaced http.FileServer with custom file serving to avoid automatic directory redirects
- Manually serve index.html for root path requests
- Custom routing bypasses ServeMux for frontend files to prevent redirect behavior
- This fixes reverse proxy and Cloudflare tunnel compatibility issues
2025-08-19 18:56:18 +00:00
Pulse Monitor 93aff683ec fix: restore Storage and Backups tab functionality for PBS-only setups
- Storage tab now shows PBS storage even without PVE nodes
- Backups tab now shows PBS backups even without PVE nodes
- Empty state message only shows when truly no nodes are configured
- Both tabs remain functional for PBS-only deployments
2025-08-19 17:48:21 +00:00
Pulse Monitor 1923ab7733 chore: bump version to v4.5.0-rc.3 2025-08-19 16:42:00 +00:00
Pulse Monitor 74b407c025 fix: support WebSocket connections through reverse proxies
- Handle X-Forwarded-Proto and X-Forwarded-Host headers in origin check
- Fixes WebSocket connections failing when accessed via reverse proxy
- Addresses #333 where connections broke after v4.3
2025-08-19 16:27:16 +00:00
Pulse Monitor cbd970ccfc feat: improve empty state UI and enhance network discovery
- Add helpful "No Proxmox VE nodes configured" message to Storage and Backup tabs
- Include "Go to Settings" button for easy navigation when no nodes exist
- Enhance network discovery for Docker environments with smart subnet detection
- Auto-detect Docker network configuration and scan appropriate subnets
- Add support for common Docker network ranges (172.16.0.0/12, 10.0.0.0/8)
- Improve discovery logging to show subnet being scanned
- Fix discovery API endpoint to properly return discovered servers
2025-08-19 16:16:18 +00:00
Pulse Monitor 70d043fb96 feat: smart network discovery for Docker environments
- Auto-detect Docker environment and scan common home/office subnets
- Scans 192.168.1.0/24, 192.168.0.0/24, 10.0.0.0/24, 192.168.88.0/24, 172.16.0.0/24
- Removes friction - nodes are discovered automatically without configuration
- DISCOVERY_SUBNET env var now optional (only for non-standard networks)
- Update documentation to reflect automatic discovery

This makes the first-run experience much smoother - users see their
Proxmox nodes immediately without having to figure out subnet configuration.
2025-08-19 15:32:26 +00:00
Pulse Monitor 7445cf7055 feat: auto-hash plain text credentials from environment variables
- Automatically hash plain text API tokens (SHA3-256) and passwords (bcrypt) when loaded from env vars
- Remove unnecessary PULSE_SETUP_TOKEN feature in favor of simpler env var approach
- Remove HandleInitialSetup endpoint - not needed with env var configuration
- Update authentication to always use hashed comparisons (no plain text warnings)
- Update documentation to clearly explain auto-hashing capability
- Maintain backward compatibility with pre-hashed credentials

This makes Pulse secure by default while keeping deployment simple - users can
provide plain text credentials via environment variables and Pulse automatically
hashes them for security.
2025-08-19 14:58:01 +00:00
Pulse Monitor 05f58711f2 fix: theme consistency across login, setup, and dashboard
- Fixed localStorage key mismatch ('dark-mode' vs 'darkMode')
- Added theme selector to setup screen (System/Light/Dark)
- Login and setup screens now respect saved theme preference
- Theme persists correctly across logout/login cycles

addresses #332
2025-08-19 10:43:04 +00:00
Pulse Monitor f8c4483add feat: add namespace filter hint to backup search placeholder
Make it more discoverable that users can filter backups by PBS namespace
by including namespace:prod example in the search field placeholder
2025-08-19 09:50:02 +00:00
Pulse Monitor 8431cfff7a improve: clarify Office 365 SMTP authentication requirements
- Update O365 email provider instructions to emphasize App Password requirement
- Add clear steps for generating App Passwords
- Explain that basic auth is deprecated and App Passwords are mandatory
- Add note about work/school account requirements

addresses user reports of O365 SMTP authentication failures
2025-08-19 09:43:05 +00:00
Pulse Monitor 4b2c2e0043 docs: update configuration documentation for env var precedence
- Clarify that env vars have highest priority and override system.json
- Document UI warning behavior when env vars override settings
- Add FAQ entry for disabled UI fields
- Fix incorrect priority order in CONFIGURATION.md
- Add clear warnings about env var override behavior

This ensures users understand why UI changes might not work when
environment variables are set, and how to resolve the issue.
2025-08-19 09:22:05 +00:00
Pulse Monitor 3af29f4b09 feat: add UI warnings for environment variable overrides
- Track which settings are overridden by env vars in backend
- Expose env override information in system settings API
- Show clear warnings in UI when settings are controlled by env vars
- Disable input fields when overridden by environment variables
- Add helpful instructions for users to remove env vars if needed

This improves UX by making it clear why UI changes don't take effect
when environment variables are set. Follows container best practices
where env vars have highest precedence, while clearly communicating
this behavior to users.

Addresses user confusion when UI settings don't work due to env var overrides.
2025-08-19 09:04:54 +00:00
Pulse Monitor 362ace960d docs: clarify environment variable precedence behavior
- Add clear warnings that env vars override UI/system.json settings
- Update log messages to indicate when env vars are overriding values
- Document standard container practice: env vars have highest precedence
- Users must remove env vars to allow UI configuration to take effect

This prevents confusion when UI changes don't work due to env var overrides.
2025-08-19 08:50:36 +00:00
Pulse Monitor 586aafd476 fix: restore environment variable support for key settings
- Re-enable DISCOVERY_SUBNET env var for Docker network configuration
- Re-enable LOG_LEVEL env var for runtime logging control
- Re-enable CONNECTION_TIMEOUT env var for timeout configuration
- Re-enable ALLOWED_ORIGINS env var for CORS configuration
- Update documentation to reflect working env vars

These env vars were accidentally disabled but are useful for Docker deployments.
Env vars override system.json settings when present.

Addresses #214 - user requested DISCOVERY_SUBNET env var support
2025-08-19 08:44:18 +00:00
Pulse Monitor 4a8f60cc13 fix: remove non-existent PBS Agent references and correct DISCOVERY_SUBNET docs
- Remove all PBS-AGENT.md references (hallucinated feature)
- Fix DISCOVERY_SUBNET env var name in Docker docs (was incorrectly PULSE_DISCOVERY_SUBNET)
- Add DISCOVERY_SUBNET examples to README for Docker users
- Update FAQ to clarify PBS push mode is not supported

Addresses #214 - user reported 404 on PBS-AGENT.md link
2025-08-19 08:30:27 +00:00
Pulse Monitor 4060188b78 fix: implement secure API token hashing with SHA3-256
- API tokens now hashed before storage (never stored in plain text)
- Raw token shown only once during generation
- Backward compatible with existing plain text tokens
- Added migration warnings for users with plain tokens
- Updated documentation to reflect security improvements
2025-08-19 08:10:37 +00:00
Pulse Monitor 0bd273d90c docs: update documentation for v4.5.0 release cycle 2025-08-18 22:28:49 +00:00
Pulse Monitor 9031157f4a chore: bump version to v4.5.0-rc.2 2025-08-18 22:23:21 +00:00
Pulse Monitor 0180e59a2e fix: restore universal tarball structure with pulse wrapper script
addresses #330 - universal tarball now includes pulse detection script at bin/pulse
2025-08-18 22:22:17 +00:00
Pulse Monitor 6056e4f14a fix: remove non-existent PBS push mode feature from README
The PBS push mode/agent feature was never actually implemented in v4.
This was documentation for a planned feature that doesn't exist.
Removed PBS-AGENT.md correctly as the feature isn't present in the codebase.
2025-08-18 22:04:23 +00:00
Pulse Monitor 0fbeaab2bc docs: clean up documentation directory
- Remove outdated UPGRADE_NOTICE_v4.3.9.md (we're on v4.5.0 now)
- Remove PBS-AGENT.md (feature doesn't exist in v4)
- Keep SCREENSHOTS.md as it provides gallery view of features

Remaining docs are all essential:
- API, CONFIGURATION, DOCKER - core documentation
- REVERSE_PROXY - critical for WebSocket setup
- SECURITY, TROUBLESHOOTING - important operational docs
- WEBHOOKS - feature documentation
- FAQ - quick answers, different from troubleshooting guide
- MIGRATION - still relevant for users upgrading
2025-08-18 22:01:42 +00:00
Pulse Monitor 40e6ed89a7 chore: reorganize repository structure for better maintainability
- Move development scripts to scripts/ directory (dev.sh, hot-dev.sh, build.sh, etc.)
- Move UPGRADE_NOTICE to docs/ directory
- Remove empty 2025-08-14 file
- Update all references to moved scripts in documentation
2025-08-18 21:57:40 +00:00
Pulse Monitor 7171af559a chore: bump version to v4.5.0-rc.1 2025-08-18 20:34:34 +00:00
Pulse Monitor 51694f41b2 fix: enforce dark mode for pre-auth screens
addresses #332 - login and setup screens now consistently use dark mode, with theme preferences only applied after authentication
2025-08-18 20:33:19 +00:00