You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(chat): prose gets its own type scale — T2 (+ T5's escape hatch)
The chat inherited `--vscode-font-size`: the size of menu labels and tree rows.
Right for a sidebar widget, wrong for reading three paragraphs, and the reason
the panel felt cramped beside the reference.
Message bodies now have their own size and leading (14px / 1.65) behind custom
properties. Scoped to `.msg .body`, NOT `.msg` — on `.msg` it would drag the role
label, the copy button and the checkpoint control up with it and the panel would
stop matching the editor. A test pins that scoping, because it is the whole
safety property of this slice.
The heading scale widens from 1.3/1.18/1.07 to 1.45/1.25/1.1. The old scale put
0.11em between h2 and h3 — 1.4px at 13px — so three levels of hierarchy were
indistinguishable without selecting the text. Measured after: 20.3 / 17.5 / 15.4
against 14px body, ~3px steps instead of 1.4px.
T1's em-based rhythm now scales with it, which was the point of making it em in
the first place: the paragraph gap resolves against the prose size, so it reads
8px in the sidebar and 14px at reading width without a second rule.
The measure holds at ~107 characters (was ~115 at 13px, 154 before T1) — the cap
tightening as the type grows, as predicted.
**T5 is folded in rather than sequenced after.** Ordering it last was a mistake:
T2 is the one slice that changes what every existing user sees, and shipping a
divisive change with no way back is worse than not shipping it.
`levelcode.ai.chat.fontSize` and `chat.proseWidth`, both defaulting to 0 meaning
"follow the default" — and 0 CLEARS the custom property so the stylesheet wins
again, rather than pinning whatever today's default happens to be. The doc
records the reordering and why.
Four guards, verified non-vacuous: scope the size to .msg (16/20), revert the
heading scale (17/20), make the role label relative (16/20), hard-code the
cleared fallback (18/20), drop one of the two config payloads (18/20).
33 suites green.
Copy file name to clipboardExpand all lines: extensions/levelcode-ai/package.json
+14Lines changed: 14 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -364,6 +364,20 @@
364
364
"default": false,
365
365
"description": "Include a list of all project file paths with each chat message, so the AI knows the repo structure. Uses more tokens."
366
366
},
367
+
"levelcode.ai.chat.fontSize": {
368
+
"type": "number",
369
+
"default": 0,
370
+
"minimum": 0,
371
+
"maximum": 24,
372
+
"markdownDescription": "Font size for chat **prose** (message bodies), in pixels. `0` follows the editor's UI font size.\n\nThe workbench size is tuned for menu labels and tree rows; message bodies default to a slightly larger size so a long answer reads comfortably. Controls, cards and the composer always follow the workbench."
373
+
},
374
+
"levelcode.ai.chat.proseWidth": {
375
+
"type": "number",
376
+
"default": 0,
377
+
"minimum": 0,
378
+
"maximum": 2000,
379
+
"markdownDescription": "Maximum width of the chat transcript, in pixels. `0` uses the default reading measure (680px).\n\nOnly has an effect when the panel is wider than the measure — in a narrow sidebar the container already bounds the line length. Set a large value to let the transcript fill the full width."
0 commit comments