- Add 30-minute cache for update checks to prevent excessive API calls
- Cache based on channel and current version combination
- Prevents 60+ API calls per hour that cause rate limiting
- Still allows immediate response but reduces GitHub API load
This fixes the rate limiting issue that was preventing proper update detection.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add checks for existing tags before pushing to avoid 'already exists' errors
- Add checks for existing releases before creating GitHub releases
- Handle race condition between PR-triggered and push-triggered workflows
- Both workflows can now run simultaneously without conflicts
This fixes the email notifications about workflow failures when creating stable releases.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The function was only checking /config/.env but not the main .env file.
This caused RC channel users to see stable updates instead of RC updates.
Also fixed version API endpoint property name: hasUpdate → updateAvailable
Now checks both config/.env (Docker) and .env (regular install) like the
main server initialization logic.
Fixes footer showing "v3.27.0 available" when on v3.27.1-rc4 with RC channel.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The issue was that onUpdateChannelChange() was calling saveConfiguration(),
which automatically closes the modal after 1.5 seconds. Now:
- onUpdateChannelChange() takes an autoSave parameter
- Only saves and triggers modal close when user manually changes channel
- Tab initialization calls onUpdateChannelChange() without autoSave
- Created separate saveChannelSetting() for immediate channel updates
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove success toast message that may have been causing modal to close
- Remove duplicate showMessage function definitions that could cause conflicts
- Use console.log instead for channel switch feedback
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Skip GitHub API comparison for development versions (containing -dev or +commit)
since these are not real GitHub tags. Shows friendly message instead of 404s.
Fixes console spam: "Failed to load resource: the server responded with a status of 404"
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove confusing "preview mode" - channels switch and save immediately
- Eliminate complex localStorage channel persistence logic
- Reduce update reload time from 10+ seconds to 3 seconds
- Remove redundant "Switch to X & Update" buttons
- Make channel switching instant with immediate feedback
Users can now simply change the dropdown to switch channels instantly,
then click Apply Update for a fast 3-second reload experience.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Reset from incorrect 3.27.0-rc9 to 3.26.5
- Allows RC workflow to generate correct version number
- Next RC should be v3.26.5-rc3 based on version analysis
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Auto-refresh frontend 10 seconds after update restart with reconnection UI
- Store and restore update channel preference across updates
- Fix footer version check to only compare within user's configured channel
- Stable users only see stable updates, RC users only see RC updates
- Eliminate confusing cross-channel update notifications
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Auto-refresh frontend 10 seconds after update restart
- Store update channel preference in localStorage during update
- Restore channel preference after successful update
- Show user-friendly progress messages during reconnection
- Automatically save restored channel preference to config
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add PulseApp.ui.toast.info() method that was referenced but not implemented
- Fixes TypeError when switching update channels in settings
- Method calls showToast with 'info' type and 4000ms duration
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Make RC workflow use same version analysis as stable workflow
- Prevents version number inconsistencies between RC and stable releases
- Ensures RC versions are based on commit analysis, not package.json
- Both workflows now calculate versions from latest stable release
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Keep develop ahead of latest stable release (v3.26.4)
- Ensures future RC releases appear at top of releases page
- Aligns with release workflow expectations
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add rebase and retry logic to handle concurrent workflow runs
- Resolve package.json conflicts automatically during releases
- Prevent workflow failures from git push conflicts
- Apply fix to both RC and stable release workflows
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Install Node.js and dependencies before creating tarball
- Build CSS with Tailwind to include output.css in RC releases
- Ensures RC tarballs work without requiring devDependencies
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add rsync for better file copying with fallback to cp
- Copy all essential directories and files like stable workflow
- Install production dependencies with npm install --omit=dev
- Add file verification checks before tarball creation
- Include scripts/install-pulse.sh and docs directories
- Match stable workflow's comprehensive tarball structure
This ensures RC releases have complete, production-ready tarballs
that match the quality and completeness of stable releases.
- Add proper staging directory structure for RC tarballs
- Ensure RC releases have top-level directory like stable releases
- Fix installer compatibility with RC releases
- Match stable workflow tarball creation process
This fixes the 'Invalid release archive' error when updating to RC versions.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix frontend update functionality with proper channel switching
- Add channel-aware version detection in footer
- Implement proper development build versioning using git describe
- Fix footer spacing issue with update indicators
- Add quick channel switch buttons with immediate updates
- Prevent update notifications for development builds ahead of releases
- Fix release URL linking to correct channel-specific releases
- Improve error handling and rate limiting for GitHub API calls
The update system now properly:
- Detects development builds vs release builds
- Shows channel-appropriate updates only
- Handles stable/RC channel switching seamlessly
- Provides proper version semantics for development environments
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>