Commit Graph

940 Commits

Author SHA1 Message Date
courtmanr@gmail.com db3c40645d fix: resolve undefined property access error in settings modal
- Add safe default structure for configuration properties
- Ensure currentConfig never remains undefined/null
- Always render form even if config loading fails
- Replace unsafe property access with safe variable references
- Prevent "Cannot read properties of undefined (reading 'host')" errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 13:56:49 +01:00
courtmanr@gmail.com d26f4b642f feat: redesign settings as comprehensive modal-based configuration system
- Replace settings tab with settings icon in top-right header
- Implement comprehensive modal interface for ALL .env variables
- Add support for multiple PVE and PBS endpoints with dynamic forms
- Include all service settings (intervals) and alert configuration
- Support both old structured format (setup) and new raw .env format
- Add connection testing and form validation
- Enable complete web-based configuration without SSH access

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 13:49:53 +01:00
courtmanr@gmail.com c2620d8d45 feat: add Settings tab for configuration management
- Add Settings tab to main interface with configuration form
- Create settings.js module for handling configuration updates
- Allow editing Proxmox credentials without SSH access
- Support partial updates (keep existing token secret if not provided)
- Integrate settings module into tab system and initialization
- Update server configApi to handle partial configuration updates

Users can now edit their configuration through the web interface after initial setup.
2025-05-30 12:04:33 +01:00
courtmanr@gmail.com d767f687ca fix: eliminate dashboard initialization error on first load
- Make updateDashboardTable gracefully handle uninitialized elements
- Try to find elements if not already cached
- Silently return instead of logging error during initial page load

This prevents the 'Dashboard table body or status element not found' error when the socket connection updates arrive before DOM is ready.
2025-05-30 11:57:18 +01:00
courtmanr@gmail.com 72547e3179 fix: improve configuration readiness detection in setup flow
- Add system info to health endpoint including configPlaceholder status
- Update setup page to check correct health properties
- Include hasData and clientsInitialized flags for better readiness detection

This ensures the 'Continue to Pulse' button appears when the server is actually ready with data, not just when it times out.
2025-05-30 11:49:11 +01:00
courtmanr@gmail.com f7e5228d1f fix: ensure API clients are properly reloaded after configuration save
- Make runDiscoveryCycle globally accessible for config reload
- Use global API clients in discovery and metrics cycles
- Trigger discovery cycle after configuration reload
- Fix issue where metrics cycle couldn't find reloaded API clients

This ensures the server properly initializes and starts collecting data after saving configuration through the web interface.
2025-05-30 11:45:08 +01:00
courtmanr@gmail.com d22f1062a3 fix: remove --env-file flag to allow server start without .env file
The --env-file=.env flag causes Node.js to exit with code 9 when the file doesn't exist.
Using just -r dotenv/config allows the server to start and redirect to the setup wizard.
2025-05-30 11:40:02 +01:00
courtmanr@gmail.com bf27ef2a6b feat: improve setup flow with health check and Continue button
- Add health endpoint polling after configuration save
- Show progress messages and loading spinner during initialization
- Display 'Continue to Pulse' button when server is ready
- Add explicit /setup.html route handler
- Improve error handling and logging in configApi
- Prevent form submission on button clicks
- Add percentage progress indicator during setup

This provides better user feedback during the configuration process and ensures users don't navigate to the dashboard before the server is ready.
2025-05-30 11:35:40 +01:00
courtmanr@gmail.com e74f8bf944 fix: initialize PulseApp before using theme on setup page
- Create PulseApp object before loading theme.js
- Add safety check before calling theme.init()
- This fixes "PulseApp is not defined" error on setup page

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 11:16:05 +01:00
courtmanr@gmail.com c3276951fb fix: prevent browser autofill issues on setup form
- Add autocomplete="off" to form and text inputs
- Add autocomplete="new-password" to password fields
- Add debug logging to see what's being saved
- This prevents browser from auto-filling URL into token secret field

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 11:14:37 +01:00
courtmanr@gmail.com bbb500f0a8 fix: restore complete configApi.js with all features
- Restore advanced settings handling in getConfig and saveConfig
- Include self-signed certificate settings
- Add PBS node name support
- Fix alert configuration saving
- Restore global lastReloadTime update to prevent double reloads
- This fixes the .env file creation and configuration saving

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 11:06:35 +01:00
courtmanr@gmail.com 07ee4f4183 fix: correct test connection success message
- Make success message text dynamic instead of hardcoded
- Test connection now shows "Connection test successful\!"
- Save configuration still shows "Configuration saved. Redirecting..."
- Prevents confusion when testing connection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 11:01:16 +01:00
courtmanr@gmail.com bd94648987 fix: resolve configuration save and redirect issues
- Use current state for configuration status check in root route
- Prevent double reload when saving config through API
- Track reload times globally to avoid file watcher conflicts
- This fixes the issue where setup page doesn't redirect after save

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 10:57:57 +01:00
courtmanr@gmail.com 97ae118b2c feat: add comprehensive configuration options to setup page
- Add advanced settings section with all .env.example options
- Include metric/discovery intervals configuration
- Add alert system configuration (enabled/thresholds)
- Add PBS node name field (required for non-Sys.Audit tokens)
- Update config API to handle all settings
- Group settings logically in generated .env file
- Load and save all configuration options properly

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 10:53:51 +01:00
courtmanr@gmail.com a8896ac3c0 fix: handle self-signed SSL certificates in configuration
- Add allowSelfSignedCerts flag to test configuration endpoints
- Automatically set ALLOW_SELF_SIGNED_CERT=true when saving config
- Include self-signed cert settings in environment variable groups
- This fixes SSL certificate verification errors with Proxmox servers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 10:48:57 +01:00
courtmanr@gmail.com 8fe4c0a80d fix: correct API client initialization for test connection
- Fix apiClients object access (use bracket notation, not .get())
- Initialize apiClients as plain objects, not Maps, for consistency
- This fixes the "apiClients.get is not a function" error when testing connections

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 10:45:52 +01:00
courtmanr@gmail.com c87a87c4c5 fix: allow server to start without configuration
- Change configuration loader to warn instead of throwing error when config is missing
- Allow server to start in setup mode with empty endpoints
- Skip API client initialization when no endpoints are configured
- This enables the web-based setup flow to work properly

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 10:40:52 +01:00
courtmanr@gmail.com 1e5451ee67 feat: add web-based configuration interface
- Create configuration setup page at /setup.html for entering Proxmox credentials
- Add configuration API endpoints for save, test, and reload operations
- Implement automatic .env file watching with hot reload on changes
- Add configuration warning banner when placeholder config detected
- Auto-redirect to setup page when configuration is missing
- Add WebSocket notifications for configuration reload events
- Update empty states with configuration required message
- No SSH or manual restarts needed - everything through web UI

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 10:35:25 +01:00
courtmanr@gmail.com 569d34bd8a feat: improve screenshot timing and update documentation images
- Add 2-second wait time to backup view screenshots for better data loading
- Update all screenshot images with latest UI state
- Remove obsolete backup script file
- Ensure backup data is fully rendered before capturing screenshots

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 00:31:20 +01:00
courtmanr@gmail.com c5ca5f4a43 docs: improve and consolidate update instructions in README
- Add dedicated "Updating Pulse" section with clear table of contents entry
- Consolidate scattered update information into one comprehensive section
- Provide specific instructions for each installation method:
  * Community Scripts: simple re-run command
  * Docker Compose: pull and restart workflow
  * Manual LXC: script re-run with service management
  * Release Tarball: step-by-step update process
  * Development/Source: corrected npm workflow
- Remove duplicate update instructions from Manual LXC section
- Fix development workflow to reflect actual package.json scripts
- Verify all instructions against source code for accuracy

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 00:26:54 +01:00
courtmanr@gmail.com 328e67bc61 feat: add clickable host names in dashboard and PBS views
- Add endpoint configuration sharing between server and client
- Make Proxmox node group headers clickable using API-based mapping
- Make PBS instance names clickable in both desktop and mobile views
- Links open correct cluster endpoints based on node's actual endpointId
- Subtle hover styling without blue underlines for cleaner UI
- All links open in new tabs with security attributes

Resolves issue with users wanting direct access to host web interfaces.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 00:16:08 +01:00
courtmanr@gmail.com 57e90ab227 fix: use GNU tar to eliminate macOS extended attributes completely
- Auto-detect and prefer GNU tar (gtar) when available
- Fallback to BSD tar with COPYFILE_DISABLE=1 if GNU tar not available
- Verified: GNU tar produces clean tarballs with zero warnings
- Final solution for macOS extended attribute issues
2025-05-29 23:39:51 +01:00
courtmanr@gmail.com 4f91cc3940 fix: completely eliminate macOS extended attributes from tarballs
- Strip extended attributes from source files before copying
- Add final cleanup step to remove attributes from staging directory
- Verified: tar extraction produces zero warnings
- Version 3.12.5 - the definitive fix
2025-05-29 23:35:36 +01:00
courtmanr@gmail.com 9483e589bb fix: add COPYFILE_DISABLE=1 to all cp commands in release script
- Prevents macOS extended attributes from being included in tarball
- Fixes tar extraction warnings for all copied files
- Version bump to 3.12.4 for testing
2025-05-29 23:31:54 +01:00
courtmanr@gmail.com 52ebb9baa3 fix: use full GitHub URL when validating version tags during fresh install
- Fixes 'origin does not appear to be a git repository' error
- Allows --version flag to work properly during fresh installations
2025-05-29 23:30:27 +01:00
courtmanr@gmail.com 6de974ebff chore: release v3.12.3
- Test tarball creation script to prevent macOS extended attribute warnings
- Minor improvements to data fetcher
2025-05-29 23:22:42 +01:00
courtmanr@gmail.com e7d53306d1 fix: prevent macOS extended attributes in tarball creation
Add COPYFILE_DISABLE=1 to all rsync operations in create-release.sh to prevent
macOS extended attributes from being included in tarballs. This eliminates the
'Ignoring unknown extended header keyword' warnings during extraction on Linux systems.
2025-05-29 22:58:54 +01:00
courtmanr@gmail.com 1943ccbba5 chore: begin development for next release 2025-05-29 22:57:02 +01:00
courtmanr@gmail.com dd73ea56ea chore: release v3.12.2 2025-05-29 22:52:51 +01:00
courtmanr@gmail.com 215b7f3f31 refactor: remove interactive configuration prompts from install script
Simplifies installation by removing all interactive Proxmox configuration prompts.
The script now simply copies .env.example to .env and instructs users to edit it manually.

This approach:
- Eliminates complex interactive prompting logic
- Gives users full control over configuration
- Reduces installation complexity
- Avoids potential input validation issues

Users now need to manually edit /opt/pulse-proxmox/.env after installation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 22:30:31 +01:00
courtmanr@gmail.com 87b996accf refactor: remove branch selection functionality from install script
Simplifies install-pulse.sh by removing all branch installation capabilities to reduce script complexity and maintainability burden.

Removed:
- --branch command line argument
- prompt_for_branch_selection() function
- Branch validation and handling logic
- "Test a feature branch" menu options
- Branch-specific installation and update paths
- Branch status reporting

The script now only supports stable version tag installations, making it more focused and easier to maintain.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 22:26:25 +01:00
courtmanr@gmail.com b9ccee0554 fix: correct tarball filename in download URLs
The script was looking for pulse-3.12.1.tar.gz but the actual release
asset is named pulse-v3.12.1.tar.gz (with 'v' prefix). This caused
404 "Not Found" errors during tarball downloads.

Fixed all download URLs to use the correct filename format that matches
the actual release asset names created by the release script.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 22:02:45 +01:00
courtmanr@gmail.com 70ecb5a9e9 fix: add comprehensive download debugging for tarball issues 2025-05-29 22:00:43 +01:00
courtmanr@gmail.com 9d1fd9cc70 chore: release v3.12.1 2025-05-29 21:59:02 +01:00
courtmanr@gmail.com b31f8ac7d6 fix: add tarball download verification and debugging
Added verification to ensure downloaded tarball files are valid gzip
archives before attempting extraction. This will help diagnose issues
where downloads return HTML error pages or corrupt data instead of
the expected tarball.

The script now provides detailed error information including file type
and hex dump of downloaded content when verification fails.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 21:57:44 +01:00
courtmanr@gmail.com 35fd4f7b7f fix: apply CSS recovery mechanism to fresh installations
Extended the CSS file recovery logic to fresh tarball installations,
not just updates. The script now attempts to recover missing or
corrupted CSS files during initial installations instead of failing
and falling back to git clone.

This ensures consistent CSS recovery behavior for both new installations
and updates, preventing installation failures due to tarball extraction
issues.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 21:55:39 +01:00
courtmanr@gmail.com 14d31372a4 fix: add CSS file recovery mechanism for failed tarball extractions
Enhanced the CSS verification to actively recover the CSS file if it's
missing, empty, or corrupted after tarball extraction. The script now
attempts direct extraction of just the CSS file from the release tarball
as a fallback mechanism.

This ensures that even if the main tarball extraction has issues, users
will still get a working CSS file and proper frontend styling.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 21:53:44 +01:00
courtmanr@gmail.com 735ec8f230 fix: use release assets instead of GitHub archive for tarball downloads
The install script was downloading from GitHub's source archive
(/archive/refs/tags/) which doesn't include built CSS assets, instead
of the release assets (/releases/download/) which do include the
pre-built output.css file.

This fixes the "CSS file missing or empty" error during tarball
installations by ensuring the script downloads the proper release
tarball that contains all built assets.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 21:50:43 +01:00
courtmanr@gmail.com 9824a8986c fix: detect and auto-repair corrupted CSS files during tarball installations
Enhance install script to automatically detect corrupted output.css files
that contain HTML error pages instead of CSS content (caused by previous
installation issues). When detected during tarball updates, the script
now automatically restores the CSS from the fresh tarball and verifies
the repair was successful.

This allows users with broken CSS installations to simply re-run the
installer to automatically fix frontend styling issues without manual
intervention.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 21:48:41 +01:00
courtmanr@gmail.com 004065a8ca fix: correct CSS file path checks in release script
The release script was checking for src/index.css but the build command
outputs to src/public/output.css. Update both the build verification
and essential files check to use the correct path.

This ensures the built CSS file is properly included and verified in
release tarballs.
2025-05-29 21:37:15 +01:00
courtmanr@gmail.com 3fd7da263f fix: prevent CSS rebuild failures in tarball installations
Tarball installations come with pre-built CSS and omit dev dependencies
like tailwindcss. Skip CSS rebuilding for tarball installations since
the CSS should already be compiled and ready to use.

This fixes the 'Failed to rebuild CSS assets' warning that was causing
frontend styling issues in tarball installations.
2025-05-29 21:33:37 +01:00
courtmanr@gmail.com 764e9c54b6 fix: ensure .env.example file is copied during tarball installation
The shell glob '*' doesn't include hidden files by default, which was
causing .env.example to be skipped during tarball extraction. Enable
dotglob to include hidden files in the copy operation.

Fixes installation failures where configure_environment couldn't find
.env.example after tarball installation.
2025-05-29 21:28:08 +01:00
courtmanr@gmail.com b72ef97d43 docs: add missing user permissions step for PBS API token setup
The PBS documentation was missing the step to add user permissions,
only mentioning token permissions. This matches the PVE documentation
which correctly shows both user AND token permissions are needed.

Fixes #89

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 21:09:41 +01:00
courtmanr@gmail.com bfda5974bc fix: prevent macOS extended attributes in release tarballs
- Add COPYFILE_DISABLE=1 when creating tarballs to prevent macOS extended attributes
- This fixes 'Ignoring unknown extended header keyword' warnings when extracting on Linux
- No changes needed in community scripts - fixes the root cause at source
2025-05-29 20:53:29 +01:00
courtmanr@gmail.com 211532e5fb chore: begin development for next release 2025-05-29 16:34:10 +01:00
courtmanr@gmail.com 5b2e01bece chore: release v3.12.0 2025-05-29 16:30:07 +01:00
courtmanr@gmail.com 90d6245e1c feat: enhance backup management with interactive calendar and improved failure tracking
- Add comprehensive PBS task failure detection and processing
- Implement interactive backup calendar heatmap with detail cards
- Enhance backup filtering with guest type and health status options
- Improve keyboard navigation and search functionality across tabs
- Add backup detail card component for granular backup information
- Update test coverage for enhanced backup data fetching
- Clean up debug logging and improve console output clarity

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 16:23:49 +01:00
courtmanr@gmail.com da491b9e43 fix: support tarball installations in installer script
- Add detection for tarball vs git installations via package.json validation
- Handle version checking for tarball installations using remote API
- Provide proper update paths for both installation types
- Fix "invalid git repository" error for tarball installations
- Ensure both installation types can be updated seamlessly

This resolves issues where tarball installations were incorrectly flagged
as invalid and prevented from updating.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 09:38:01 +01:00
courtmanr@gmail.com eb1081f56e fix: comprehensive installer resilience improvements
- Replace destructive git clean with selective conflict handling
- Add comprehensive backup/restore system for user data (.env, custom configs, data dirs)
- Implement emergency recovery procedures with clear user guidance
- Preserve user configuration across both tarball and git update methods
- Add safety checks before destructive operations
- Provide detailed error messages and recovery instructions

This addresses critical reliability issues that were causing configuration loss
during automatic updates, significantly improving user experience and trust.

Key improvements:
- Backup: .env, custom-config.json, user-settings.json, data/, logs/, backups/, custom/
- Smart conflict resolution instead of destructive git clean
- Multi-layered backup system (user data + full installation backup)
- Automatic restoration with proper permissions
- Emergency recovery with clear manual instructions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 09:34:55 +01:00
courtmanr@gmail.com b01711c4e7 fix: preserve .env file during automatic updates
- Backup .env file before git clean to prevent configuration loss
- Restore .env file after git operations with proper ownership
- Ensures user configuration survives cron-based updates

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 09:29:53 +01:00