The check-changes job was only diffing HEAD~1..HEAD (the single most recent
commit). When CI-only commits landed after Android code changes, the deploy
was skipped every hour even though app code had changed since the last
successful Play Store publish.
Fix: fetch full history (fetch-depth: 0) and diff from LAST_DEPLOYED_SHA
when available, so all commits since the last deploy are considered. Also
simplify the Python workflow_id filter to match regardless of whether
Forgejo returns a bare filename or a full path. Fix duplicate entry in
check_coverage.dart exclusions and update the selection-mode golden that
was off by 4 pixels.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
dagger call --progress=plain -q writes its final error (e.g.
"invalid return status code") directly to the controlling terminal
rather than through stdout/stderr, so the DAGGER_OUT file that the
grep-based retry check reads ends up empty. Add RC=2 as an
additional fallback condition so the retry triggers even when the
output-capture path misses the error message.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add "context deadline exceeded" to the retry_dagger network-error
pattern so transient Dagger engine connection timeouts (10-min
BuildKit context deadline) trigger a retry instead of immediately
failing the full check suite.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the publish-website job from deploy.yml and add an hourly cron
schedule to website.yml so the website deploys independently on its own
cadence. Also fix pre-existing golden test and coverage exclusions for
files introduced in #315.
Reimplements the changes from PR #307 (branch issue-299-fix) on top of
current main, resolving all merge conflicts.
Features added:
- User preferences system (DB schema v34–v36): menuPosition,
mailViewButtonPosition, afterMailViewAction stored as a singleton row
- Preferences screen accessible from the account drawer
- Configurable menu bar position in mailbox view (bottom/top)
- Configurable back button position in single mail view (bottom/top)
- Configurable "after mail action": navigate to next message or return to
mailbox after delete/archive/spam/move/snooze
- Archive button in email detail screen; resolveMailboxByRole helper
prompts to choose or create a folder when none exists
- Improved Mark as spam: uses resolveMailboxByRole with dialog
- Show full discrepancy details in account list sync health row
- CSS fixes in SecureEmailWebView to prevent HTML email content overflow
- Preserve manually-set mailbox roles across IMAP syncs
- Tooltip on List-Unsubscribe chip showing the URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>