返回 DeepSeek-Reasonix
transcript.log
根目录 / docs / evidence / chat-refactor / transcript.log
1
2 > reasonix-desktop-frontend@0.0.0 test:transcript <repo>/desktop/frontend
3 > tsx src/__tests__/chat-view-source.test.ts && tsx src/__tests__/chat-content-loader.test.ts && tsx src/__tests__/chat-details-race.test.tsx && tsx src/__tests__/markdown-natural-flow.test.tsx && tsx src/__tests__/chat-natural-flow.test.tsx && tsx src/__tests__/chat-scroll-controller.test.ts && tsx src/__tests__/markdown-pipeline.test.tsx && tsx src/__tests__/markdown-worker-client.test.ts && tsx src/__tests__/transcript-store.test.ts && tsx src/__tests__/transcript-snapshot-client.test.ts && tsx src/__tests__/transcript-scroll-diagnostics.test.ts && tsx src/__tests__/typography-overflow-contract.test.ts && tsx src/__tests__/nested-scroll-handoff.test.ts
4
5 chat view: stable streaming, settlement, prepend, fold, incomplete history and disposal passed
6 chat content: concurrency, deduplication, generation and cleanup races passed
7 tool details: old target completion cannot overwrite the current drawer; session replacement closes details
8 markdown natural flow: worker races, stable DOM/selection, final references, cache and complete blocks passed
9 chat natural flow: process disclosure, details, 60-commit cascade and session isolation passed
10 chat scroll: reader intent, prepend, growth, jump, no-op and stale observer tests passed
11
12 markdown pipeline parity
13 PASS code-fence fixture exceeds 100KB
14 PASS headingsAndProse: pipeline render matches react-markdown
15 PASS headingsAndProse: sliced blocks render identically (3 blocks)
16 PASS gfmTable: pipeline render matches react-markdown
17 PASS gfmTable: sliced blocks render identically (1 blocks)
18 PASS taskList: pipeline render matches react-markdown
19 PASS taskList: sliced blocks render identically (1 blocks)
20 PASS strikethroughAutolink: pipeline render matches react-markdown
21 PASS strikethroughAutolink: sliced blocks render identically (1 blocks)
22 PASS mathInline: pipeline render matches react-markdown
23 PASS mathInline: sliced blocks render identically (1 blocks)
24 PASS mathBlockRepair: pipeline render matches react-markdown
25 PASS mathBlockRepair: sliced blocks render identically (4 blocks)
26 PASS mathInlinePipe: pipeline render matches react-markdown
27 PASS mathInlinePipe: sliced blocks render identically (1 blocks)
28 PASS footnotes: pipeline render matches react-markdown
29 PASS footnotes: sliced blocks render identically (2 blocks)
30 PASS crossBlockRefs: pipeline render matches react-markdown
31 PASS crossBlockRefs: sliced blocks render identically (5 blocks)
32 PASS mermaidFence: pipeline render matches react-markdown
33 PASS mermaidFence: sliced blocks render identically (1 blocks)
34 PASS bigCodeFence: pipeline render matches react-markdown
35 PASS bigCodeFence: sliced blocks render identically (1 blocks)
36 PASS cjk: pipeline render matches react-markdown
37 PASS cjk: sliced blocks render identically (2 blocks)
38 PASS rawHtml: pipeline render matches react-markdown
39 PASS rawHtml: sliced blocks render identically (1 blocks)
40 PASS unsafeAndFileLinks: pipeline render matches react-markdown
41 PASS unsafeAndFileLinks: sliced blocks render identically (1 blocks)
42 PASS manyBlocks: pipeline render matches react-markdown
43 PASS manyBlocks: sliced blocks render identically (80 blocks)
44 PASS empty fenced blocks do not render phantom code cards
45 PASS text around empty fenced blocks remains visible
46 PASS non-empty comment code blocks remain visible
47 PASS non-empty comment code keeps its code-block surface
48 PASS block keys are stable indexes
49 PASS footnote section is the trailing block
50 PASS footnote reference links survive slicing
51 PASS footnote definition anchors survive slicing
52 PASS urlTransform parity for "https://example.com/a?b=c#d"
53 PASS urlTransform parity for "http://example.com"
54 PASS urlTransform parity for "mailto:user@example.com"
55 PASS urlTransform parity for "javascript:alert(1)"
56 PASS urlTransform parity for "vbscript:x"
57 PASS urlTransform parity for "data:text/html,boom"
58 PASS urlTransform parity for "./relative/path"
59 PASS urlTransform parity for "../up"
60 PASS urlTransform parity for "/absolute"
61 PASS urlTransform parity for "#fragment"
62 PASS urlTransform parity for "query?only"
63 PASS urlTransform parity for "ftp://example.com/file"
64 PASS urlTransform parity for "file:///etc/passwd"
65 PASS urlTransform parity for "HTTPS://EXAMPLE.COM/upper"
66 PASS urlTransform parity for "ircs://irc.example.com/chan"
67 PASS urlTransform parity for "xmpp:user@example.com"
68 PASS urlTransform parity for "a:b:c"
69 PASS urlTransform parity for ""
70 PASS urlTransform parity for "C:\\src\\app.ts"
71 PASS authority-form UNC survives pipeline URL sanitization
72 PASS authority-form UNC href survives HAST rendering
73 PASS unsafe local URL is blanked: file://./PhysicalDrive0
74 PASS unsafe local URL is blanked: file:////?/C:/Windows
75 PASS unsafe local URL is blanked: file:///C:/safe.txt:payload
76 PASS unsafe local URL is blanked: file:///tmp/report.md?download=1
77 PASS unsafe local URL is blanked: file:///tmp/report.md#section
78 PASS content revision is deterministic
79 PASS content revision distinguishes texts
80 PASS hast byte estimate is positive and bounded
81 PASS hast byte estimate grows with content
82
83 markdown selection projection
84 PASS selection projection preserves readable structure, code, tables, CJK, emoji and LaTeX
85 PASS native DOM selection includes Unicode, links and complete code text
86 PASS selection revision fingerprints projected UTF-16 text
87 PASS large plain table uses the virtual table representation
88 PASS virtual table projection includes rows that never mount in the DOM
89
90 74 passed, 0 failed, 74 total
91
92 markdown worker client
93 PASS request posted to the worker
94 PASS response resolves with the full parse result
95 PASS pending map drains after a response
96 PASS cancelled parse resolves undefined
97 PASS cancelling active work terminates the stale parser
98 PASS late response for a cancelled id is dropped
99 PASS parse cancelled during worker startup resolves undefined
100 PASS no pending entry survives an early cancel
101 PASS worker parse error rejects with its message
102 PASS pending map drains after an error
103 PASS crashed worker rejects stranded requests
104 PASS a fresh parse recreates the worker after a crash
105 PASS recreated worker serves the retry
106 PASS fallback resolves the parse result without a Worker
107 PASS fallback receives the exact source text
108 PASS dispose settles a pending request (1)
109 PASS dispose settles a pending request (2)
110 PASS dispose terminates the worker
111 PASS dispose drains the pending map
112 PASS parse after dispose resolves undefined immediately
113 PASS no pending-request growth across 100 mixed cycles
114 PASS no unhandled rejections across 100 mixed cycles
115 PASS every cycle issued exactly one request
116 PASS worker queue runs only one parse at a time
117 PASS request ids increase monotonically
118
119 25 passed, 0 failed, 25 total
120
121 transcript store
122 PASS paged read pause equals live and legacy history presentation
123 PASS reloading a pause does not duplicate its card
124 PASS latest page projects items
125 PASS latest page reports older history
126 PASS history user items retain their absolute turn for complete-session navigation
127 PASS every paged user item carries an absolute history turn
128 PASS paged concatenation equals single-shot conversion (228 items from 286 messages)
129 PASS newest page item ids are stable across prepends
130 PASS item ids are unique across the full projection
131 PASS 10,000-turn target paging reaches the first page
132 PASS 10,000-turn target paging respects both turn and production entry bounds
133 PASS 10,000-turn target paging performs the expected bounded backend calls
134 PASS targeted pages use the backend's bounded 1000-entry capacity
135 PASS 10,000-turn target paging preserves every question
136 PASS 10,000-turn target paging lands on absolute turn one
137 PASS 10,000-turn target paging keeps the tail coordinate
138 PASS 10,000-turn target paging keeps item ids unique
139 PASS 10,000-turn transcript stays within the production history body budget
140 PASS 10,000-turn targeted paging completes within 10s (1190.8ms)
141 PASS result row converts standalone before its call pages in
142 PASS standalone result keeps the toolCallId item id
143 PASS older page prepends
144 PASS the standalone result item is superseded by the merged call item
145 PASS exactly one tool item after the merge (no duplicate)
146 PASS merged tool item takes the call's args
147 PASS merged tool item takes the result's output
148 PASS merged tool item is done
149 PASS merged projection equals single-shot conversion
150 PASS append contributes the new rows' items
151 PASS append keeps existing item ids
152 PASS append grows the projection
153 PASS three sessions resident at the cap
154 PASS fourth session evicts the least-recently-used one
155 PASS new session stays resident
156 PASS pinned sessions do not count toward the resident cap
157 PASS pinned live session survives eviction
158 PASS oldest unpinned session evicts instead
159 PASS evicted session re-opens via a fresh slice fetch
160 PASS re-opened session restores its full projection
161 PASS history body budget holds across sessions
162 PASS byte budget evicts the oldest by weight
163 PASS newest session survives byte-budget eviction
164 PASS markdown cache returns stored value
165 PASS markdown LRU evicts the least-recently-used entry
166 PASS recently read markdown entry survives
167 PASS markdown entries key on entryId + revision
168 PASS active selection pins its markdown projection
169 PASS newest-page references stay lazy until the view requests them
170 PASS the view can distinguish a missing full value from an unreferenced body
171 PASS fixture fits in one page
172 PASS resolved full content replaces the inline preview
173 PASS content resolution notifies subscribers with item patches
174 PASS resolved content is served from the record
175 PASS resolved content is not re-fetched
176 PASS stale ref keeps the inline preview
177 PASS latest page still projects
178 PASS superseded load discards its late response
179 PASS the latest load wins
180 PASS evicted session discards its late response
181 PASS evicted records never land
182 PASS the requested first-generation content is in flight
183 PASS late content chunk from a previous generation is discarded
184 PASS stale cursor triggers a latest-page reload
185 PASS reload replaces with the fresh newest page
186 PASS paging resumes after the reload
187 PASS older page prepends after reload
188 PASS matching canonical fingerprint reuses the resident projection
189 PASS resident projection retains its canonical revision
190 PASS changed same-path fingerprint bypasses the resident projection
191 PASS fresh projection adopts the advanced canonical digest
192 PASS positive legacy slice revision implies a known canonical identity
193 PASS legacy tool parameters load completely
194 PASS legacy tool output loads completely
195 PASS legacy tool parameters load completely
196 PASS legacy tool output loads completely
197 PASS reopening reads only the selected tool's two references
198 PASS full details leave the preview Item unchanged
199
200 77 passed, 0 failed
201 transcript snapshot client races, independent concurrent fields and complete tool details: ok
202 transcript scroll diagnostics tests passed
203
204 typography overflow contract
205 PASS chat content can shrink beside the dock launcher
206 PASS completed markdown wraps the same long tokens as the stream tail
207 PASS reasoning wraps long tokens
208 PASS inline reasoning wraps long tokens
209 PASS .md pre retains its own wrapping contract
210 PASS .md pre code retains its own wrapping contract
211 PASS .md table retains its own wrapping contract
212 PASS .md .katex retains its own wrapping contract
213 PASS only complete commands opt into code wrapping
214 PASS commands wrap continuous tokens
215 PASS command loading and loaded views share the height cap
216 PASS text-size presets include the large accessibility step
217 PASS legacy sans alias stays synced with UI font
218 PASS xxlarge has a real scale bump
219 PASS status bar dock height scales with interface text size
220 PASS layout reserves scaled status bar height
221 PASS app height follows the live viewport height variable
222 PASS empty transcript can scroll instead of clipping
223 PASS welcome empty state is not clipped by its own box
224 PASS non-transcript markdown still culls offscreen blocks with a 72px placeholder
225 PASS natural chat uses real Markdown geometry
226 PASS chat has one readable column
227 PASS chat uses native vertical scrolling
228 PASS normal chat inset is 24px
229 PASS narrow chat inset is 16px
230 PASS narrow details cover the chat surface
231 PASS empty-state auto margins apply only to the welcome content
232 PASS empty-state generic children do not receive auto margins
233 PASS fixed status bar height follows the scaled dock token
234 PASS status bar min-height follows the scaled dock token
235 PASS brand list scrolls independently
236 PASS provider detail can shrink within its column
237 PASS long model IDs wrap within the detail
238 PASS provider model rows grow with their content
239 PASS provider model cards do not force undersized rows
240 PASS provider model cards contain overflowing controls
241 PASS compaction choices fit the settings control width
242 PASS compaction rows align radio, label, percentage and explanation
243 PASS compaction rows retain a stable click target
244 PASS compaction explanations can shrink and wrap
245 PASS percentage suffix remains visible beside the editable value
246 PASS status bar keeps metrics on one row
247 PASS status bar hides vertical overflow
248 PASS .statusbar__model clips long text
249 PASS .statusbar__model uses ellipsis
250 PASS .statusbar__model stays on one line
251 PASS .sidebar-im__summary-label clips long text
252 PASS .sidebar-im__summary-label uses ellipsis
253 PASS .sidebar-im__summary-label stays on one line
254 PASS .sidebar-im__summary-status clips long text
255 PASS .sidebar-im__summary-status uses ellipsis
256 PASS .sidebar-im__summary-status stays on one line
257 PASS .workbench-dock__tab-label clips long text
258 PASS .workbench-dock__tab-label uses ellipsis
259 PASS .workbench-dock__tab-label stays on one line
260 PASS .workspace-files__scope-title clips long text
261 PASS .workspace-files__scope-title uses ellipsis
262 PASS .workspace-files__scope-title stays on one line
263 PASS .workspace-files__scope-meta clips long text
264 PASS .workspace-files__scope-meta uses ellipsis
265 PASS .workspace-files__scope-meta stays on one line
266 PASS .context-panel__section-head span clips long text
267 PASS .context-panel__section-head span uses ellipsis
268 PASS .context-panel__section-head span stays on one line
269 PASS .context-panel__metric span clips long text
270 PASS .context-panel__metric span uses ellipsis
271 PASS .context-panel__metric span stays on one line
272 PASS .context-panel__metric strong clips long text
273 PASS .context-panel__metric strong uses ellipsis
274 PASS .context-panel__metric strong stays on one line
275 PASS .app--creation .context-panel__mini-stat-label clips long text
276 PASS .app--creation .context-panel__mini-stat-label uses ellipsis
277 PASS .app--creation .context-panel__mini-stat-label stays on one line
278 PASS .app--creation .context-panel__mini-stat strong clips long text
279 PASS .app--creation .context-panel__mini-stat strong uses ellipsis
280 PASS .app--creation .context-panel__mini-stat strong stays on one line
281 PASS .topbar__model clips long text
282 PASS .topbar__model uses ellipsis
283 PASS .topbar__model stays on one line
284 PASS .composer-modebar__item span clips long text
285 PASS .composer-modebar__item span uses ellipsis
286 PASS .composer-modebar__item span stays on one line
287 PASS .composer-more-menu__item span clips long text
288 PASS .composer-more-menu__item span uses ellipsis
289 PASS .composer-more-menu__item span stays on one line
290 PASS creation dock skips zero-width grid interpolation on open
291 PASS creation overview usage card disables inherited entrance animation
292 PASS creation overview rows avoid edge-pinned value alignment
293 PASS creation overview rows avoid the spacer grid that pushes values to the edge
294 PASS creation overview values are not capped to a fixed 14ch width
295 PASS session metric labels and rate badges share a compact header row
296 PASS rate badges remain visible without truncating the amount row
297 PASS rate badge labels stay intact
298 PASS chat mode switcher contains enlarged labels
299 PASS task method selector keeps its current state visible at narrow widths
300 PASS task method selector truncates its value only when constrained
301 PASS model selector uses the shared control weight
302 PASS execution policy and model settings have a compact visual divider
303 PASS composer enters icon-only mode before model and effort controls overlap
304 PASS approval mode switcher shrinks with its compact composer container
305 PASS ask approval restores the solid semantic fill
306 PASS auto approval keeps high-contrast text on its solid fill
307 PASS yolo approval restores the solid warning fill
308 PASS task method menu uses the shared menu width
309 PASS menu descriptions can wrap onto a second line
310 PASS menu descriptions no longer use single-line ellipsis
311 PASS task method selector uses the shared keyboard focus ring
312 PASS model and effort selectors use the shared keyboard focus ring
313 PASS active permission options retain keyboard focus feedback
314 PASS creation assistant body text follows the conversation text size
315 PASS themed assistant body text follows the conversation text size
316 PASS creation assistant body follows the conversation font family
317 PASS creation markdown follows the conversation font family
318 PASS creation composer input follows the composer text size
319 PASS interface text resolves its own exact regional size
320 PASS conversation text resolves its own exact regional size
321 PASS composer text resolves its own exact regional size
322 PASS code text resolves its own exact regional size
323 PASS code blocks keep the regional code font
324 PASS inline code keeps the regional code font
325 PASS nested code text inherits the regional code font
326 PASS line-numbered code text inherits its viewer font
327 PASS line-numbered code viewers use the regional code font
328 PASS diff text follows the global scale until the code region is customized
329 PASS message metadata keeps its regional size
330 PASS composer metadata keeps the regional font
331 PASS status bar keeps the regional font
332 PASS conversation preview uses the exact conversation size
333 PASS interface preview uses the exact interface size
334 PASS composer preview uses the exact composer size
335 PASS code preview uses the exact code size
336 PASS metadata preview uses the exact supporting-text size
337 PASS live preview renders the selected region's exact size
338 PASS creation reasoning keeps the conversation font
339 PASS creation tool names keep the code font
340 PASS creation rules do not hardcode bare px font sizes (except font-size:0)
341 PASS creation context-ring popover (portaled to body) follows interface text size
342 PASS context-ring popover rules do not hardcode bare px font sizes (except font-size:0)
343 PASS collapsed creation tool bodies keep mounted content clipped
344 PASS collapsed creation tool bodies do not paint hidden tool text
345 PASS composer compact controls activate at the capped theme width
346 PASS markdown table wrapper scrolls horizontally
347 PASS markdown table wrapper does not nest vertical scroll
348 PASS markdown tables stay in document flow for trackpad Y
349 PASS code blocks scroll horizontally instead of widening the layout
350 PASS code blocks do not nest vertical scroll by default
351 PASS settings center stacks navigation before the modal is too narrow
352 PASS settings fields collapse to one column at the mid-width breakpoint
353 PASS settings modal only becomes fullscreen at the narrow breakpoint
354 PASS narrow workbench layout hides side panels and keeps chat single-column
355 PASS .reasoning__head font size follows the text-size scale
356 PASS .turn-collapse__reasoning-head font size follows the text-size scale
357 PASS .process-card__head font size follows the text-size scale
358 PASS .tool__difflabel font size follows the text-size scale
359 PASS .msg-memory-citations font size follows the text-size scale
360 PASS .msg-memory-citations__source font size follows the text-size scale
361 PASS .msg-memory-citations__note font size follows the text-size scale
362 PASS .msg-attachment__name font size follows the text-size scale
363 PASS .msg-attachment__meta font size follows the text-size scale
364 PASS .msg-pasted-head font size follows the text-size scale
365 PASS .msg-pasted-expanded font size follows the text-size scale
366 PASS .msg__send-failed font size follows the text-size scale
367 PASS :root[data-theme-style] .process-card__kind font size follows the text-size scale
368 PASS :root[data-theme-style] .msg--assistant > .process-card[data-tone="violet"] .process-card__name font size follows the text-size scale
369
370 164 passed, 0 failed, 164 total
371
372 nested scroll handoff
373 PASS nested can scroll up from mid-body
374 PASS nested can scroll down from mid-body
375 PASS nested cannot scroll up at top
376 PASS nested cannot scroll down at bottom
377 PASS horizontal-only wrapper cannot scroll vertically
378 PASS wheel-up at nested top should handoff to parent
379 PASS wheel-up mid nested should not handoff
380 PASS wheel over horizontal-only table wrapper handoffs vertical to parent
381 PASS edge wheel is preventDefaulted
382 PASS edge wheel promotes deltaY onto parent scrollTop
383 PASS edge handoff notifies parent scroll intent
384 PASS edge handoff reports normalized direction to the parent controller
385 PASS latched gesture continues on parent
386 PASS latched wheel keeps applying to parent
387 PASS latched handoff keeps reporting normalized direction
388 PASS mid nested wheel is left to the browser after latch expires
389 PASS mid nested wheel does not move parent after latch expires
390 PASS line-mode wheel deltas use a stable pixel fallback
391 PASS page-mode wheel deltas use the transcript viewport height
392 PASS line-mode handoff applies normalized pixels instead of raw lines
393 PASS page-mode handoff applies one viewport page
394
395 21 passed, 0 failed
396
396 lines Plain Text