- Alternate suggestions render as tappable rows that swap into the
editable field, with their rationale as a visible second line (phones
have no hover for a title tip). The predictor already returned up to 3
kind-diverse suggestions; the modal showed only the first.
- Rethink now records every displayed suggestion as rejected and carries
an optional free-text steer note (the API accepted steer since phase 2;
the UI never collected it). Both reset on each open. The steer field
stays available in the error phase: steering a failed run's retry is
exactly when a note helps.
- The modal header names the target session: overview rows and the
accessory key can open it for a session that is not the active tab.
- Phone surfaces: a keyboard-accessory 🧠 key (hidden unless
readMyMindEnabled is ON and the active session is claude mode,
re-derived after innerHTML rebuilds, settings applies, and session
switches) and a Suggest strip on the phone overview's yellow waiting
rows (waiting only: on red rows a dialog is on screen and input text
would land in its menu; answer routing is phase 3 PR 2)
- The modal renders as a compact sheet on phones with 16px inputs (iOS
zoom guard) and 44px tap targets
- Send/Insert/Rethink freeze during the loading phase so a stale
suggestion cannot be sent mid-rethink
- test/readmymind-phase3-surfaces.test.ts pins the load-bearing facts in
CI: key in BOTH bar layouts, [hidden] re-assertion over inline-flex,
header button off phones, the waiting-only row gate, no terminal
refocus from the readmymind action, steer outside the result div
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>