The check-changes job in deploy.yml only diffed HEAD~1..HEAD — the single most-recent commit. When CI-only commits landed after Android code changes (e.g. the three recent Taskfile/workflow fixes), the hourly schedule saw no Android-relevant files in the diff and skipped Play Store deployment every time, even though app code had changed since the last successful publish.
Fix
fetch-depth: 0 — full history checkout so LAST_DEPLOYED_SHA is always reachable
Diff from LAST_DEPLOYED_SHA — when the last-deployed SHA is known and present in local history, diff from that point instead of just HEAD~1, catching all commits since the last deploy
Simplified Python workflow_id filter — removed the == "deploy.yml" equality check that could silently fail if Forgejo returns the full path (.forgejo/workflows/deploy.yml) in the response; the URL query already filters by workflow
Also includes two unrelated pre-existing fixes that blocked task check:
Remove duplicate entry in scripts/check_coverage.dart exclusion list
Update email_list_selection.png golden (was off by 4 pixels)
## Root cause
The `check-changes` job in `deploy.yml` only diffed `HEAD~1..HEAD` — the single most-recent commit. When CI-only commits landed *after* Android code changes (e.g. the three recent Taskfile/workflow fixes), the hourly schedule saw no Android-relevant files in the diff and skipped Play Store deployment every time, even though app code had changed since the last successful publish.
## Fix
- **`fetch-depth: 0`** — full history checkout so `LAST_DEPLOYED_SHA` is always reachable
- **Diff from `LAST_DEPLOYED_SHA`** — when the last-deployed SHA is known and present in local history, diff from that point instead of just `HEAD~1`, catching all commits since the last deploy
- **Simplified Python `workflow_id` filter** — removed the `== "deploy.yml"` equality check that could silently fail if Forgejo returns the full path (`.forgejo/workflows/deploy.yml`) in the response; the URL query already filters by workflow
Also includes two unrelated pre-existing fixes that blocked `task check`:
- Remove duplicate entry in `scripts/check_coverage.dart` exclusion list
- Update `email_list_selection.png` golden (was off by 4 pixels)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Root cause
The
check-changesjob indeploy.ymlonly diffedHEAD~1..HEAD— the single most-recent commit. When CI-only commits landed after Android code changes (e.g. the three recent Taskfile/workflow fixes), the hourly schedule saw no Android-relevant files in the diff and skipped Play Store deployment every time, even though app code had changed since the last successful publish.Fix
fetch-depth: 0— full history checkout soLAST_DEPLOYED_SHAis always reachableLAST_DEPLOYED_SHA— when the last-deployed SHA is known and present in local history, diff from that point instead of justHEAD~1, catching all commits since the last deployworkflow_idfilter — removed the== "deploy.yml"equality check that could silently fail if Forgejo returns the full path (.forgejo/workflows/deploy.yml) in the response; the URL query already filters by workflowAlso includes two unrelated pre-existing fixes that blocked
task check:scripts/check_coverage.dartexclusion listemail_list_selection.pnggolden (was off by 4 pixels)🤖 Generated with Claude Code