Lightweight triage UI
Duckbill™ ships a Next.js attention workspace at /inbox. It is not a full mail client and has no compose/send surface.
Anonymous /inbox and /inbox/* redirect to /login. After an Apple session or the owner ops escape (POST /api/session/owner), the workspace loads. See application authentication.
Routes
| Screen | Path |
|---|---|
| Home | /inbox |
| Needs Me | /inbox/needs-me |
| Respond | /inbox/respond |
| Waiting | /inbox/waiting |
| System Alerts | /inbox/alerts |
| Conversation | /inbox/conversations/{id} |
| Structured search | /inbox/search |
| Settings / health | /inbox/settings |
| Accounts | /accounts |
Practices
- Empty, error, and stale-sync states are visible.
- Header Accounts sits between Triage and Sign in. Settings links to
/accounts. /accountslists mailbox, provider, authorization, and sync status fromGET /api/v1/health, and can start another Graph connect.- Cards show mailbox and provider, not only subject.
- The conversation panel shows agent summary and confidence.
- Available actions may show pending/capability chips and reserved command routes. Send and delete are not offered.
- WCAG 2.2 AA practices: skip link, landmarks, visible
:focus-visible, keyboard-reachable controls. - Header lockup stays the Duckbill™ brand; chrome links to https://jasonkoch.io.
See ADR 0023 and triage query APIs.
