@@ -163,6 +163,39 @@ the contribution schema only drive the settings *editor*; a hand-edited `setting
163163transcript — a panel with nothing left on screen to open settings with, whose only exit is finding the
164164JSON file again. ` webviewCss.test.js ` pins the clamp to the schema so the two cannot drift.
165165
166+ ### D8 — Your turn sits right. The assistant's stays left.
167+
168+ Added after T4 shipped, from the reference: in the Claude Code console your messages are right-aligned
169+ bubbles and the replies are left-aligned prose.
170+
171+ This is the half T4 was missing, and it closes a risk T4 opened rather than merely adding polish. T4
172+ removed the labels and left the ** bubble** carrying the speaker distinction alone — but the bubble is
173+ ` --field-bg ` on a ` --border ` outline, which is near-invisible in some themes. On a low-contrast theme a
174+ transcript could read as one undifferentiated voice, which is precisely the failure D6 was trying to
175+ avoid. ** Side is unmissable in every theme, at every contrast, and costs no chrome at all.**
176+
177+ Three things this decides, each with a way to get it wrong:
178+
179+ - ** ` align-items ` , not ` text-align ` .** The * bubble* is what moves; the prose inside it stays
180+ left-aligned. ` text-align: right ` looks identical on a one-line message and is unreadable on a
181+ three-line one. The suite fails on it.
182+ - ** The bubble hugs its content** (` width: fit-content ` ), so "Yes" is a 47px bubble and a pasted stack
183+ trace is a wide one. The shape of a turn now carries information the label used to spell out.
184+ - ** Capped at 85%, not 100%.** At 100% a long question fills the measure, reads as a full-width block
185+ again, and the side cue disappears exactly when the transcript is densest.
186+
187+ Measured in headless Chrome at a 680px column, against ` develop ` :
188+
189+ | | before | after |
190+ | --- | --- | --- |
191+ | short bubble ("Yes") | 680px | ** 46.9px** , flush right |
192+ | long user turn | 680px | ** 578px** — exactly the 85% cap, flush right |
193+ | assistant | 680px, left | 680px, left (unchanged) |
194+ | ` text-align ` inside the bubble | ` start ` | ` start ` |
195+
196+ Tint stays as the secondary cue rather than being removed: side alone would fail on any surface that
197+ reflows the log to a single column.
198+
166199---
167200
168201## 3. Slices
@@ -185,7 +218,13 @@ selection, and every non-prose control still matches workbench chrome.
185218accessibility tree, and a turn start buys back part of the height it was occupying. ** Exit:** the
186219transcript reads as prose with the bubble as the only visual speaker cue, a continuation is still
187220visibly tighter than a new turn, and ` .msg.cont ` still emits no label — verified by computed styles
188- against ` develop ` , not by eye.
221+ against ` develop ` , not by eye. * (T6 then made side the primary cue, so "the bubble alone" describes
222+ T4 as it shipped, not the current state.)*
223+
224+ ** T6 — side** * (S)* . D8. ** Shipped.** Your turn moves right and hugs its content; the assistant stays
225+ left and full-measure. ** Exit:** a short turn renders as a short right-flush bubble, a long one caps
226+ below the column, the assistant is untouched, and the prose inside the bubble is still left-aligned —
227+ all four measured, not eyeballed.
189228
190229** T5 — the escape hatch** * (S)* . D7. ** Folded into T2 and shipped with it.** Sequencing it last was a
191230mistake: T2 is the one slice that changes what every existing user sees, and shipping a divisive
@@ -195,6 +234,11 @@ property reaches the webview from settings, the second is a line — so splittin
195234Sequencing: T1 first and alone — it may turn out to be most of the perceived fix, and shipping it
196235by itself is the cheapest way to find out before spending effort on T2–T4.
197236
237+ That held up: T1–T2, T4 and T6 have shipped in that order, each visible on its own. ** T3 is the only
238+ slice of this plan still outstanding.** D8/T6 was not in the original decomposition — it came from
239+ looking at the reference again after T4, which is the argument for shipping slices small enough to
240+ look at.
241+
198242---
199243
200244## 4. Risks, honestly
0 commit comments