- 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>
- 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>
- 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>
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>
- 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>
- Move >&2 redirection outside of echo command to properly redirect to stderr
- Fixes display of literal ">&2" text in error messages
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add proper error handling for grep commands that may return no matches
- Fix branch detection pipelines with || true pattern
- Add 2>/dev/null to suppress error messages for branch existence checks
- Fix systemctl service detection grep command
- Resolves installation error "[ERROR] in line 37: exit code 0" reported in issue #84🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add storage tab screenshot to complete UI coverage
- Make all desktop screenshots consistent viewport size (1440x900px)
- Update all mobile screenshots to new numbering (06-08)
- Combine desktop and mobile screenshots into single unified section
- Create perfect 2x2 grid layout for desktop views
- Ensure all screenshots use viewport capture for consistency
- Remove fullPage and screenshotTarget from mobile sections
- All mobile screenshots now use viewport capture (430x932px)
- Ensures consistent alignment in README table layout
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add mobile viewport support to screenshot script with iPhone 14 Pro Max dimensions
- Generate mobile screenshots for dashboard, PBS view, and backups view
- Fix chart toggle selector bug (label:has() instead of missing for attribute)
- Reduce screenshot wait times for faster generation
- Update README with new mobile screenshots section
- Refresh all existing desktop screenshots
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add prompt_for_branch_selection() function to list available feature branches
- Add 'Test a feature branch' option to all menus (uptodate, update, fresh install)
- Users can now browse and select branches interactively instead of needing --branch flag
- Filters for feature/, hotfix/, and dev/ branches only
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Reorder the version check logic to prioritize branch/version specifications
over the up-to-date check. This ensures that --branch flag properly triggers
update mode instead of getting stuck in uptodate mode.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
When using --branch with an up-to-date installation, the script was falling
into update mode but showing generic 'Update to latest version' instead of
the branch-specific menu.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add specific menu case for branch installations
- Show 'Install branch X (for testing)' instead of confusing 'Update to latest version'
- Makes it clear that option 1 will install the specified branch
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add --branch parameter to allow installing from any branch
- Users can now test features with: curl ... | sudo bash -s -- --branch feature-name
- Validates branch exists before checkout
- Shows clear warnings that branches are for testing only
- Updates version display to show branch/commit info
- Prevents using both --version and --branch together
This makes it easy for users to test features before release
- Add --branch parameter to allow installing from any branch
- Users can now test features with: curl ... | sudo bash -s -- --branch feature-name
- Validates branch exists before checkout
- Shows clear warnings that branches are for testing only
- Updates version display to show branch/commit info
- Prevents using both --version and --branch together
This makes it easy for users to test features before release