Skip to content

fix(ci): Deploy appcast files to GitHub Pages for Sparkle updates#94

Merged
eyelock merged 3 commits into
mainfrom
fix/phase-7-sparkle-debugging
Jan 27, 2026
Merged

fix(ci): Deploy appcast files to GitHub Pages for Sparkle updates#94
eyelock merged 3 commits into
mainfrom
fix/phase-7-sparkle-debugging

Conversation

@eyelock
Copy link
Copy Markdown
Owner

@eyelock eyelock commented Jan 27, 2026

Problem

Sparkle auto-update framework fails with "Update Error" because appcast files return 404:

This causes "Check for Updates" button to be disabled in Settings.

Root Cause

The docs.yml workflow only deploys Docs/Help/ directory to GitHub Pages. The appcast files in Docs/appcast*.xml are never deployed, even though the update-appcast.yml workflow generates them correctly on each release.

Previous PRs (#56, #78, #79) fixed appcast generation but never addressed deployment.

Solution

Update .github/workflows/docs.yml:

  1. Create staging directory with Help content
  2. Copy appcast files to root of staging directory
  3. Deploy entire staging directory to GitHub Pages
  4. Trigger workflow on appcast file changes

This deploys both Help docs (at root) and appcast files (at root) so:

  • https://eyelock.github.io/TermQ/ → Help index
  • https://eyelock.github.io/TermQ/appcast.xml → Stable releases feed
  • https://eyelock.github.io/TermQ/appcast-beta.xml → Beta releases feed

Additional Changes

Debug logging:

  • Added emoji-tagged logs to track Sparkle initialization and update checks
  • Helps diagnose update flow issues

Debug build warning:

  • Added warning in Settings for Debug builds that installing updates will replace the Debug app with Production version
  • Allows testing update flow while understanding consequences

Testing

After this PR merges and workflow runs:

  • ✅ Appcast files will be accessible at GitHub Pages URLs
  • ✅ Sparkle will set canCheckForUpdates to true
  • ✅ "Check for Updates" button will be enabled
  • ✅ Update check will succeed (or show "no updates available")

Phase 7 Testing Status

  • ✅ Test 7.1: Sparkle Integration Present - UI elements exist
  • ⏳ Test 7.2: Update Check Behavior - Waiting for appcast deployment
  • ⏳ Test 7.3: Appcast URL Configuration - Waiting for appcast deployment
  • ⏳ Test 7.4: Update Installation - Will test after deployment

🤖 Generated with Claude Code

## Problem

Sparkle auto-update framework fails with "Update Error" because appcast
files return 404:
- https://eyelock.github.io/TermQ/appcast.xml (404)
- https://eyelock.github.io/TermQ/appcast-beta.xml (404)

This causes "Check for Updates" button to be disabled in Settings.

## Root Cause

The docs.yml workflow only deploys `Docs/Help/` directory to GitHub Pages.
The appcast files in `Docs/appcast*.xml` are never deployed, even though
the update-appcast.yml workflow generates them correctly on each release.

Previous PRs (#56, #78, #79) fixed appcast generation but never addressed
deployment.

## Solution

Update `.github/workflows/docs.yml`:
1. Create staging directory with Help content
2. Copy appcast files to root of staging directory
3. Deploy entire staging directory to GitHub Pages
4. Trigger workflow on appcast file changes

This deploys both Help docs (at root) and appcast files (at root) so:
- https://eyelock.github.io/TermQ/ → Help index
- https://eyelock.github.io/TermQ/appcast.xml → Stable releases feed
- https://eyelock.github.io/TermQ/appcast-beta.xml → Beta releases feed

## Additional Changes

**Debug logging:**
- Added emoji-tagged logs to track Sparkle initialization and update checks
- Helps diagnose update flow issues

**Debug build warning:**
- Added warning in Settings for Debug builds that installing updates will
  replace the Debug app with Production version
- Allows testing update flow while understanding consequences

## Testing

After this PR merges and workflow runs:
- Appcast files will be accessible at GitHub Pages URLs
- Sparkle will set canCheckForUpdates to true
- "Check for Updates" button will be enabled
- Update check will succeed (or show "no updates available")

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
David Collie added 2 commits January 27, 2026 23:29
- Add settings.debug.update.warning.title
- Add settings.debug.update.warning.message
- Update SettingsGeneralView to use localized strings
- Sync keys to all 40 supported languages
@claude
Copy link
Copy Markdown

claude Bot commented Jan 27, 2026

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

@eyelock eyelock merged commit 0dd25fb into main Jan 27, 2026
8 checks passed
@eyelock eyelock deleted the fix/phase-7-sparkle-debugging branch January 27, 2026 23:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant