docs(chat): note the second rebase and renumbering; re-lock the question-stem describedby on the shared composer
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
| 3 · 校正复用 ChatComposer / 统一滚动跟随 / JumpToLatest / 900px | 完成(第三批合入后解除阻塞) | `b72c1efc` | BUG-477、BUG-478 |
|
||||
| 4 · DESIGN.md | 与 0/1/2 对应的条目随各任务改;与 3 对应的四条随任务 3 同 commit | — | — |
|
||||
|
||||
**第二次 rebase 与编号再顺延(2026-09-02)**:远端又合入 `1a3e14e7`(问题题干显示/占用后解锁采用),占了 BUG-471/472。本分支再次用 `filter-branch` 在原提交上改号后 rebase 到 `1a3e14e7`:471→473、472→474、473→475、474→476、475→477、476→478,`BUG_HISTORY`、本文件、测试注释、commit message 一并改。冲突两处:`docs/BUG_HISTORY.md`(取 staging 全文 + 我方条目续在后面);`rectification-agentic-chat.tsx`(两边都保留——staging 的 `collectSpokenPromptId` 与题干 `<p>` 原样,staging 加在 `<Textarea>` 上的 `aria-describedby` 改为经 `ChatComposer` 新增的 `describedBy` prop 传入,composer 把它与字数计数 id 合并成一个 `aria-describedby`)。staging 新测试 `rectification-spoken-collect` 锁 `aria-describedby={collectSpokenPrompt`(内联 Textarea),按红线 3 改锁 `describedBy={collectSpokenPrompt …}` + composer 的合并表达式,注释原值。`character-remaining-contract` 的 `aria-describedby={showRemaining ? remainingId : undefined}` 锁随之改为合并表达式。
|
||||
|
||||
## 任务 0 · 流式渲染
|
||||
|
||||
改动:`src/lib/stream-frame-buffer.ts`(新)、`src/lib/chat-markdown-split.ts`(新)、`src/components/chat-message-content.tsx`、`src/components/chat-message-row.tsx`(`streaming` prop)、`src/hooks/use-consultation-run.ts`、`src/components/rectification-agentic-chat.tsx`。
|
||||
|
||||
@@ -111,7 +111,14 @@ test("collect_spoken current_question renders the prompt in the question slot",
|
||||
assert.match(chat, /const collectSpokenPrompt =/);
|
||||
assert.match(chat, /collectSpokenPrompt\n\s+\? "请回答上面的问题…"/);
|
||||
assert.match(chat, /rectification-question-slot__prompt/);
|
||||
assert.match(chat, /aria-describedby=\{collectSpokenPrompt/);
|
||||
// Former lock: `aria-describedby={collectSpokenPrompt` on the inline <Textarea>. The rectification
|
||||
// surface now renders the shared ChatComposer (BUG-477) and hands the stem id in as `describedBy`,
|
||||
// which the composer merges into the field's aria-describedby together with the count id.
|
||||
assert.match(chat, /describedBy=\{collectSpokenPrompt && !showLiveChoiceCard && !readonly/);
|
||||
assert.match(
|
||||
readFileSync(new URL("../src/components/chat-composer.tsx", import.meta.url), "utf8"),
|
||||
/\[describedBy, showRemaining \? remainingId : undefined\]\.filter\(Boolean\)\.join\(" "\)/,
|
||||
);
|
||||
assert.match(chat, /<RectificationChoiceCard/);
|
||||
assert.doesNotMatch(chat, /rectification-question-slot__spoken/);
|
||||
assert.doesNotMatch(chat, /请在下方输入框回答/);
|
||||
|
||||
Reference in New Issue
Block a user