Document: loomworks-mobile-companion-surface-scoping-note-v0_1
Version: v0.1
Status: scoping note — precedes a frontend CR. Shape settled with the Operator; defaults below confirm at CR drafting.
Date: 2026-06-27
Origin: Operator observed on iPhone that there is no way to read the Companion conversation on mobile. Diagnostic confirmed: the mobile in-engagement layout (MobileSurface) matches mobile-mockup-2 faithfully — rooms-swipe + a transient 5-second hint flash, no persistent conversation surface. The hint flash is useful and stays. The absence of any readable Companion surface is the oversight (the mockup accounted for the transient hint but not for "where do I go to read the conversation").
Not a regression: the mobile transcript never existed; this is a deliberate extension of mockup-2, not a restoration.
The desktop in-engagement surface has the Companion conversation as a persistent left pane (ConversationPane). Mobile has no equivalent — the Companion's replies only flash transiently in the hint line. This CR brings mobile to parity in the way mobile's model allows: the Companion becomes a surface in the swipe plane, alongside the four rooms.
Today's mobile swipe plane: Memory → Manifestation → Shaping → Rendering (four rooms, swipe horizontally, MobileSurface).
After: Companion → Memory → Manifestation → Shaping → Rendering (five surfaces; the Companion is the readable, persistent conversation).
The hint flash stays exactly as is. It is not replaced. The two affordances do different jobs and complement each other:
You glance at the hint as replies arrive; you swipe to the Companion when you want to read.
ConversationPane shows — the persistent transcript (Operator turns + Companion turns), now with the per-bubble timestamps just added. Reuse the conversation rendering; adapt the layout to the single-column mobile width.flex-1 overflow-y-auto. The Companion transcript should scroll the same way (newest at bottom, scroll up for history), with the bottom bar fixed. Confirm the conversation's load-earlier (the CR-2 paged spine) works on this mobile surface too — it should, since it's the same usePagedList/ConversationPane data.useConversation, the CR-2 usePagedList spine, the timestamps). The Companion surface consumes the same data the desktop pane does.MobileSurface. This adds one surface to the swipe plane and renders the transcript in it — it does not rebuild the mobile shell.
So the work is: extend MobileSurface's swipe plane from four surfaces to five, render the conversation (reusing ConversationPane's logic adapted to single-column), keep the hint flash and bottom bar, wire the nav row for five. Frontend-only — no engine.
Independent of the truthfulness fix (that's engine; this is frontend) and the folder-upload work. Can build any time after its decisions are confirmed. Note it should build on a branch that includes the CR-2 timestamp work (so the mobile transcript gets timestamps too) — i.e. off current feat-companion-surface once the pending voice-panel/timestamp commits are pushed/settled.
DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — mobile Companion surface — scoping note — v0.1 — 2026-06-27 Adds the Companion as a fifth swipe surface in MobileSurface, peer to the four rooms — a persistent readable conversation. The 5-second hint flash stays. Frontend-only, reuses the desktop transcript + CR-2 paging. Extends mobile-mockup-2.