docs(chat): record streaming-ux progress, block task 3 on batch three, align DESIGN.md

DESIGN.md gains the streaming-states table, the thinking-collapse and
label-swap motion rows, the 17px body correction and the single live
marker rule; task 3 is registered in BLOCKED.md until the home split
batch three lands; PROGRESS lists every touched assertion with its
former value.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
This commit is contained in:
Jesse_Chen
2026-09-01 23:14:42 +00:00
parent 6356d7b549
commit eeb82dfdc4
4 changed files with 128 additions and 9 deletions
-5
View File
@@ -104,7 +104,6 @@ export function createStreamFrameBuffer<Meta>(
let answerBacklog = 0;
let thinkingBacklog = 0;
let meta = options.initialMeta;
let dirty = false;
let disposed = false;
let frameHandle: number | null = null;
let timeoutHandle: number | null = null;
@@ -121,7 +120,6 @@ export function createStreamFrameBuffer<Meta>(
};
const emit = (settled: boolean) => {
dirty = false;
options.flush({
answer: releasedAnswer,
thinking: releasedThinking,
@@ -173,12 +171,10 @@ export function createStreamFrameBuffer<Meta>(
setMeta(next) {
if (disposed) return;
meta = typeof next === "function" ? (next as (current: Meta) => Meta)(meta) : next;
dirty = true;
schedule();
},
touch() {
if (disposed) return;
dirty = true;
schedule();
},
settle() {
@@ -198,7 +194,6 @@ export function createStreamFrameBuffer<Meta>(
releasedThinking = "";
answerBacklog = 0;
thinkingBacklog = 0;
dirty = false;
if (nextMeta !== undefined) meta = nextMeta;
},
dispose() {