Problem
The deploy badge (GitHub Actions latest run) is polled by the console only while it's open. The user wants to be told when a DEPLOY finishes (so they can check the live version) — independent of whether they're watching, and distinct from the agent's reply.
Approach
- A durable watcher (Cloudflare Workflow or cron) per repo-with-github that detects a run transitioning to completed (success/failure) and fires a notification via the existing
notifyUser (in-app + web push), deep-linked to the repo + the run URL.
- Dedup so one run notifies once; respect the per-device push dedup already in place.
- Gated: only for repos with a
github_repo + the GitHub App installed.
Scope
- A poll/cron that tracks last-seen run id per repo in D1; on a new completed run,
notifyUser("✅ Deployed #N" / "❌ Build failed #N", url=run.html_url).
Acceptance
- Push a commit → CI runs → when it goes green/red you get ONE notification (even with the console closed) linking to the run.
Problem
The deploy badge (GitHub Actions latest run) is polled by the console only while it's open. The user wants to be told when a DEPLOY finishes (so they can check the live version) — independent of whether they're watching, and distinct from the agent's reply.
Approach
notifyUser(in-app + web push), deep-linked to the repo + the run URL.github_repo+ the GitHub App installed.Scope
notifyUser("✅ Deployed #N" / "❌ Build failed #N", url=run.html_url).Acceptance