Push notifications when a specialist is waiting on you
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 21m
- Merged PRs (30d)
- 41
Description
Follow-up from the design in `docs/superpowers/specs/2026-08-31-bench-over-firestore-design.md`, deliberately out of scope for #45, #46 and #47.
## Why
Working from a phone is two halves. #46 gives the first: you can open the cockpit anywhere and drive a specialist. This is the second: being told that a specialist is waiting on you, without having the app open.
Without it, remote bench is something you have to remember to check. A specialist that hits a decision at 11am and is answered at 4pm has been idle for five hours.
## What it needs
- FCM, and a per-device subscription written when a device turns notifications on.
- A push handler in the service worker (`src/client/sw.ts` exists) that opens the cockpit at the waiting decision.
- A trigger in the daemon: it already knows the moment a turn ends with a decision — that is what the roster socket reports (`src/daemon/server.ts:1073`).
- A rule about what is worth waking someone for. A decision, yes. A reply, probably not.
Worth confirming before building: whether FCM's send path is usable without Cloud Functions, given this project is on the Spark plan and has no billing.
## Related
- Depends on #45 (identity) and #46 (the wire).
- Design: `docs/superpowers/specs/2026-08-31-bench-over-firestore-design.md`
Contributor guide
Research direction
Read docs/superpowers/specs/2026-08-31-bench-over-firestore-design.md, then inspect src/client/sw.ts and src/daemon/server.ts:1073. First confirm whether FCM sending works without Cloud Functions on the Spark plan, and resolve which events should wake a user. Done means device subscriptions, decision-triggered pushes, and cockpit links opening at the waiting decision work end to end.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- firebase, typescript
- Domain
- backend, mobile, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100