The four heaviest dialog elements named in the brief as v1.5+. Each one is dense enough that the phone is the
hard case — if it works here, the tablet and desktop are easier ports. Same visual contract as 4d (Tier-A):
every element is a chat-thread payload first, full-screen sheet second.
Live dashboard tile↓{ source, refresh_sec, series:[t,v], delta, badge? }TIER BDONE
Detailed renderings
Each phone shows the dialog as it appears inside a chat thread on the 1.0 iOS app. Agent name + project chip in the dialog header signal which expert sent it; the user approves, rejects, or comments — same review-loop contract as the email-draft card.
01
Spreadsheet · diff-edit
Agent proposes structured cell edits. User sees was → now per changed cell, approves the whole patch or rejects.
#502fix(routing): clamp ambig margin floor to 0.04DRAFT
2 files+18−4· branch jr/clamp-margin
src/ranker/ambiguity.ts+14−3
src/ranker/ambiguity.test.ts+4−1
@@ 84,7 → 84,18 — isAmbiguous()
84 if (top.length < 2) return false;
85 const m = top[0].s - top[1].s;
86 return m < 0.05;
85 const margin = top[0].s - top[1].s;
86 const floor = Math.max(0.04, cfg.margin);
87 return margin < floor;
88}
JRJonas2m Pinning to 0.04 — anything under reads as noise on small corpora.
Per-hunkEach hunk has its own SKIP / APPROVE toggle so partial approvals are possible. The PR-level button only commits the approved set.
Inline threadComments anchor to the hunk, not the line — phone-screen real estate forces this. Line-level threads stay on desktop.
Tier1.0 native. Same surface on the 0.x PWA but uses GitHub's WebAuthn flow for the actual approval — the visual is identical.
04
Live dashboard tile · auto-refresh
Periodic-refresh chart tile. Pushed in via APNs background tasks; on iOS 17+ the same payload also drives a Live Activity. Status badge stays present even between pushes.
LIVE dotPulsing green only while the connection is open. Goes solid grey when the source last pushed >2× the refresh interval ago — never claims fresh data it doesn't have.
Last pointAlways emphasized (filled dot + soft halo). The eye lands on now before scanning the trend.
Tier1.0 native (APNs + ActivityKit). 0.x PWA fallback: manual refresh button replaces the LIVE pulse; same visual otherwise.
Tier 1.0Native iOS · UIKit + SwiftUI. Spreadsheet / Kanban / PR review also render in the 0.x PWA — same payload schema, same visual contract; the iOS lift gesture on Kanban and the live-pulse on the tile are the iOS-only deltas.
Pinning to 0.04 — anything under reads as noise on small corpora.