Commit Graph

198 Commits

Author SHA1 Message Date
courtmanr@gmail.com e2ed7327e2 fix: correct port number in installer (7655 not 3000)
The server is hardcoded to use port 7655, not 3000
2025-05-31 15:43:10 +01:00
courtmanr@gmail.com 640f31ae4b fix: handle Express version mismatch in tarballs
- Check for Express version mismatch after extracting tarball
- Reinstall dependencies if Express version is wrong
- Fixes service startup failure due to path-to-regexp error
- Works around issue where GitHub releases have wrong Express version

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 15:34:49 +01:00
courtmanr@gmail.com 098b579592 feat: restore installer self-update check
- Added back the self-update check for the installer script
- Installer now checks for updates to itself before running
- Skips update check when running from pipe (curl | bash)
- User is prompted before updating the installer

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 15:31:19 +01:00
courtmanr@gmail.com f2994141b6 refactor: clean up installer for pre-built tarball releases
- Removed npm dependency installation from installer (tarballs include deps)
- Cleaned up output with better icons and formatting
- Simplified installation flow since tarballs are pre-built
- Reduced installer from 590 to 522 lines
- Fixed messaging to be cleaner and more professional

The installer now expects properly built tarballs from create-release.sh
that include all dependencies and pre-built CSS.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 15:29:05 +01:00
courtmanr@gmail.com 227de6a65e fix: install dev dependencies temporarily for CSS build
- Install all dependencies (including dev) initially
- Build CSS with tailwindcss available
- Remove dev dependencies after CSS is built
- Fixes installation failure due to missing tailwindcss
2025-05-31 15:22:25 +01:00
courtmanr@gmail.com 081f1703d3 fix: handle CSS build gracefully in tarball installations
- Check if CSS is already built before attempting to rebuild
- Skip CSS build if tailwindcss is not available (dev dependency)
- Continue installation even if CSS build fails (tarball should have pre-built CSS)
- Fix issue where installation would fail due to missing tailwindcss

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 15:18:12 +01:00
courtmanr@gmail.com e0e0781819 refactor: simplify install script and remove automatic updates
- Reduced script size from 2290 to 590 lines (74% reduction)
- Switched from git cloning to tarball installation
- Removed all automatic update functionality (cron jobs, self-update)
- Removed unnecessary dependencies (git, diffutils, jq)
- Simplified installation flow with cleaner code structure
- Preserved core functionality: install, update, remove, migrate
- All updates now require manual execution

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 15:15:47 +01:00
courtmanr@gmail.com 56a7cfce8a fix: ensure npm install runs when Express version mismatch is detected
- Set should_update_deps=true when Express version mismatch is found
- Previously, the installer would detect the mismatch but still skip npm install
- This was causing the path-to-regexp error to persist even after detection

The installer will now properly update dependencies when it detects
that Express version is not 4.19.2.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 15:03:20 +01:00
courtmanr@gmail.com 03d51263e1 fix: remove bash syntax errors in installer script
- Remove 'local' keyword usage outside of functions
- Variables should_update_deps, current_express_ver, and express_version are now global
- Fixes "./install-pulse.sh: line 2204: local: can only be used in a function" error

This was preventing the dependency update logic from running properly.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:56:18 +01:00
courtmanr@gmail.com 24e8636c36 fix: ensure installer always updates dependencies on updates
- Changed installer to always run npm install on updates, not just fresh installs
- Added Express version check even for tarball installations
- Forces dependency update if Express version doesn't match expected 4.19.2
- Removed manual fix script as it's no longer needed

The issue was that tarball installations include pre-built node_modules,
which prevented dependency updates when package.json changed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:53:31 +01:00
courtmanr@gmail.com af9f3ed0a1 feat: add emergency fix script for Express version issue
- Add fix-express-version.sh script to manually resolve path-to-regexp errors
- Script performs complete node_modules cleanup and reinstall
- Verifies correct Express 4.19.2 version is installed
- Provides immediate solution while installer is being debugged

Run this script on affected servers:
sudo /opt/pulse/scripts/fix-express-version.sh

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:50:50 +01:00
courtmanr@gmail.com ae4ba7e4da fix: force clean dependency install to resolve path-to-regexp error
- Stop the service before updating dependencies
- Remove node_modules directory to force clean install
- Add Express version verification after install
- This ensures old Express 4.21.x dependencies are completely removed

The service recovery was masking the real issue - old node_modules
were not being updated properly, keeping the problematic Express version.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:48:53 +01:00
courtmanr@gmail.com d7601a48a9 fix: improve npm dependency installation in installer
- Switch from npm install to npm ci for clean installs based on package-lock.json
- Add fallback to npm install if npm ci fails
- Remove --unsafe-perm flag and use --omit=dev for production installs
- Show dependency installation output (filtering npm WARN messages)

This ensures that package-lock.json changes are properly applied during updates,
fixing issues where old dependencies remain after updates.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:46:39 +01:00
courtmanr@gmail.com ae5a861fa8 fix: improve service error detection in installer script
- Replace overly broad npm notice detection with specific checks
- Add detection for actual npm start misconfiguration in ExecStart
- Separate npm errors/warnings from service configuration issues
- Provide clearer troubleshooting guidance for each error type

This prevents false positives when npm notices appear in logs
during normal operation with direct node execution.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:34:56 +01:00
courtmanr@gmail.com aa138e1164 fix: resolve service startup failures by using direct node execution
Replace npm execution with direct node server/index.js in systemd service to eliminate npm-related startup failures and update notices. Add improved diagnostics to detect and explain npm execution issues.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:26:50 +01:00
courtmanr@gmail.com 592556ccb8 enhance: improve service recovery feedback in installation script
Add clearer messaging when service recovery succeeds to provide better user feedback during installation process.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 14:22:56 +01:00
courtmanr@gmail.com 864d7e180e enhance: improve migration from /opt/pulse-proxmox to /opt/pulse
- Add comprehensive user notification with migration details
- Implement pre-migration validation (disk space, permissions, valid installation)
- Add migration status tracking to prevent duplicate attempts
- Enhance error messages with detailed troubleshooting steps
- Provide interactive confirmation before proceeding

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 10:56:03 +01:00
courtmanr@gmail.com 142cdf6216 fix: make EnvironmentFile optional in systemd service to prevent startup failures
Changes EnvironmentFile to EnvironmentFile=- in systemd service template, allowing service to start even when .env file doesn't exist during fresh installations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 00:11:59 +01:00
courtmanr@gmail.com 1004d30ae7 fix: add git repository validation before attempting git operations in installer
Prevents "fatal: not a git repository" error when install script falls back to git update on non-git directories.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-31 00:08:58 +01:00
courtmanr@gmail.com 4f678c600e fix: resolve PVE backup visibility issue with hybrid node discovery and filtering fixes
Implements comprehensive solution for GitHub issue #80 where PVE backups stored on local node storage weren't appearing in the backup tab. Adds intelligent node discovery system that creates direct connections to access node-local storage while maintaining backward compatibility with shared storage setups.

Key improvements:
- Hybrid discovery approach with automatic node IP detection and connection caching
- Fixed data structure mismatches and key collision issues for duplicate VMIDs across nodes
- Corrected PVE backup filtering logic in summary cards and calendar views
- Enhanced API token permission documentation for storage content access
- Optimized connection handling with reduced timeouts for faster discovery cycles

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 23:43:56 +01:00
courtmanr@gmail.com ea1842a29e feat: enhance migration logic to automatically fix systemd service paths
- Added fix_service_paths() function to update service files with old paths
- Migration now automatically updates WorkingDirectory and EnvironmentFile in systemd service
- Handles edge cases where migration occurred but service paths weren't updated
- Prevents "Internal Server Error" issues that users might face after migration
- Service is stopped, updated, and restarted during migration for seamless transition

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 22:11:46 +01:00
courtmanr@gmail.com 440744fcb0 fix: update CSS fix script path from /opt/pulse-proxmox to /opt/pulse
- Updated default PULSE_DIR in fix-css.sh to use new installation path
- Ensures CSS fix script works with updated installation location

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 22:08:36 +01:00
courtmanr@gmail.com c40e3d7084 feat: update installation path from /opt/pulse-proxmox to /opt/pulse
- Changed PULSE_DIR from "/opt/pulse-proxmox" to "/opt/pulse" to align with community scripts
- Added automatic migration logic to handle existing installations at old path
- Migration preserves all user configuration and data with backup creation
- Updated remove function to clean up both old and new directories
- Added safety checks and rollback functionality for failed migrations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 21:51:54 +01:00
courtmanr@gmail.com f624e2e2df feat: update release script to align with web-based configuration
- Remove .env.example from tarball creation (no longer needed)
- Remove .env.example from essential files verification
- Update manual installation instructions to use web interface
- Simplify release process by eliminating manual .env file setup
- Align with new automatic settings modal approach

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 15:16:49 +01:00
courtmanr@gmail.com e1494418b8 feat: update install script for web-based configuration approach
- Remove automatic .env.example copying that's no longer needed
- Preserve existing .env files to avoid overwriting user configuration
- Update messaging to reflect new web-based setup via settings modal
- Provide clear first-time setup instructions for new installations
- Maintain backward compatibility for existing installations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-30 15:15:29 +01:00
courtmanr@gmail.com e49da4612c 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 395c7c4669 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 7828346de0 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 18c2579bc2 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 c5c9408ceb 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 c770c07671 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 d5aa59ac93 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 5bd8b47b1a 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 778fd908fe 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 666e4107c1 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 af627c5d76 fix: add comprehensive download debugging for tarball issues 2025-05-29 22:00:43 +01:00
courtmanr@gmail.com 357b8e79cf 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 7277e43992 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 25ea0cc258 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 c4afde5345 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 16000a81a6 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 7595fb48bd 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 a2d7c91150 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 e48facaf00 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 b5edb664e4 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 0d5825d57f 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 304dbc952c 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 593e0b0d03 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
courtmanr@gmail.com cd34a2bb2c feat: add tarball support to installation and release scripts
Installation Script Improvements:
- Add tarball download and extraction functions
- Prefer tarballs over git clone for version tag installations
- Maintain git clone fallback for reliability and branch installations
- Add intelligent CSS/dependency detection to skip builds when present
- Fix non-interactive mode to handle fresh installations

Release Script Improvements:
- Include pre-built CSS and build configuration files
- Add production npm dependencies to tarballs
- Add verification for essential files in releases
- Update instructions to promote automated installation
- Ensure compatibility with tarball installation approach

Benefits:
- Faster installations (no npm install/CSS build required)
- More reliable in constrained network environments
- Backward compatible with existing workflows
- Maintains full functionality for development branches

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-29 00:05:37 +01:00
courtmanr@gmail.com cba1f787b4 fix: prevent install script from prompting for input in non-interactive mode
- Add MODE_UPDATE checks to skip all user prompts when --update flag is used
- Prevents "Invalid choice" errors in automated/cron environments
- Script now proceeds with default actions in non-interactive mode
- Fixes installation failures when no user input is available

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-28 23:28:38 +01:00