- 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>
Per-case profiles of user intent (docs/readmymind-plan.md): user-stated goals
plus the user's recently submitted prompts, captured from the Claude session
transcript behind the new synced readMyMindEnabled setting (default OFF).
- intent-store.ts: keyed by owner + realpath(workingDir), FIFO/size caps,
consecutive-dupe collapse, atomic 0600 writes to ~/.codeman/intents.json
- transcript-watcher.ts: new transcript:user_prompt event for typed user turns
(tool_result-only entries stay silent); capture wiring in server.ts is
claude-only and gated on the setting per event
- readmymind-routes.ts: GET/PUT/DELETE /api/sessions/:id/intent, ownership
via findSessionOrFail, strict Zod schema
- agent skill: SKILL.md recipe + endpoints.md rows so agents can read and
record intent (PUT replaces: read + merge; never delete unprompted)
- groundwork for the phase-2 predictor button; nothing is ever auto-sent
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>