Repository navigation
tui3: a reply that is only a number and a full stop draws nothing #1072
Description
What happens
Ask the chat something whose whole answer is a number, and the model replies 1024. or 32.. The turn folds to ▸ worked 5.1s · thought 0.2s · ctrl+e and nothing stands under it. ctrl+e opens the fold and shows only the thought row. The transcript has the text ("role":"assistant","content":"1024."), and the store has the message row, so the model answered and the surface dropped it.
Paris, 32 (no full stop), a fifteen-word sentence and a three-sentence answer all draw. Only <number>. vanishes.
Why
internal/tui2/prose hands the reply to Markdown, and 32. on a line of its own is an ordered list with one empty item. renderer.list (internal/tui2/prose/render.go, the list method) pushes the marker column, renders the empty item, and pops it with len(r.out) > before false, so the marker is discarded too. The reply renders to zero rows and the deck skips it.
Replication a stranger can run
Unit level, no model:
// internal/tui2/prose/bare_number_test.go
func TestABareNumberedReplyStillDraws(t *testing.T) {
for _, in := range []string{"32.", "1024."} {
if got := strings.TrimSpace(strings.Join(Render(in, Options{Width: 80}), "\n")); got == "" {
t.Errorf("%q rendered to nothing", in)
}
}
}Fails today on dev (80e985165) and on the shipped d8e9dd6b5: both "32." and "1024." render to "", while "32", "Paris" and "1. one" draw.
Live, any model: bin/codeaf in tmux, type what is 2 to the power 5? reply with only the number followed by a period, nothing else. The model says 32. (check the session's transcript.jsonl); the screen shows the worked chip and no answer.
Acceptance, end to end first
- Real binary in tmux, the ask above: the answer row under the chip reads
32.(or the number the model chose). go test ./internal/tui2/prose -run TestABareNumberedReplyStillDrawspasses: a Markdown ordered-list marker with no item body is drawn as the literal text, never as an empty list.1. onestill draws as a list, and the existinginternal/tui2/prosesuite stays green.
Found on 2026-09-16 while running the journey suite proposed in #1068 against dev; its first journey (what is 2 to the power 10?) timed out waiting for 1024 on screen.
Activity
docs/changes: the #1068 entry says why the journey suite is out, corr…
Clean internal experiment records and revive test/ux for codeaf (#1068)
chat: a bare number-and-period reply draws instead of vanishing (#1072)…