Commit Graph

8852 Commits

Author SHA1 Message Date
creatixchu
70ec51b1ba Merge remote-tracking branch 'origin/master' into worktree/composer-scrollbar-gutter 2026-08-04 16:42:45 +08:00
imccyu
11bad56fc3 Merge pull request #1396 from deepseek-harness/worktree/sidebar-scrollbar-reveal
feat(web): draw the sidebar's scrollbar only under the pointer
2026-08-04 16:31:56 +08:00
creatixchu
60e4509c1d docs(web): trim the column's gutter comments to contract plus note link 2026-08-04 16:30:45 +08:00
creatixchu
1098dc9836 docs(web): cite the surviving composer scrollport note for the WebKit gutter measurement 2026-08-04 16:21:55 +08:00
creatixchu
e49f678614 Merge remote-tracking branch 'origin/master' into worktree/composer-scrollbar-gutter 2026-08-04 16:20:33 +08:00
creatixchu
29646074cd Merge origin/master into worktree/sidebar-scrollbar-reveal 2026-08-04 16:19:46 +08:00
creatixchu
d907c8475f fix(web): keep the input card in place across view tabs
The composer seat is one node laid out against two different edges: in Chat it
is a sticky child of the column's scroller and rides its content box, which a
space-consuming scrollbar shortens, while a view declaring a composer overlay
gets an absolutely positioned seat against the padding box, which no bar
reduces. With the transcript scrolling the two tabs disagreed by the bar's
width, so the centred input card moved 4px sideways on every switch — and the
same 4px inside Chat when a growing transcript began to scroll.

The column now reserves its scrollbar gutter unconditionally and states the
overlay branch a scroll container on the same axes, so both states measure
against the same width.
2026-08-04 16:13:52 +08:00
imccyu
828cb2ae20 Merge pull request #1345 from deepseek-harness/feat/turn-running-time
feat/turn-running-time
2026-08-04 16:11:32 +08:00
imccyu
ad03ccbd7a Merge branch 'master' into feat/turn-running-time 2026-08-04 16:03:31 +08:00
imccyu
b4a4f337e4 test(client): derive retry timing expectation 2026-08-04 16:02:19 +08:00
imccyu
cc435a9c0c fix(web): use exact turn boundaries for run time 2026-08-04 15:55:07 +08:00
CreatixChu
1be3a65857 Merge pull request #1057 from deepseek-harness/worktree/composer-caret-binding
fix(web): bind the composer's caret to its glyphs with one scrollport
2026-08-04 15:48:39 +08:00
creatixchu
86514f2921 Merge origin/master into worktree/sidebar-scrollbar-reveal
#1381 landed the bar's horizontal position; this branch decides when it is
drawn. The e2e keeps both scenarios and the golden carries both palettes'
pointer-state readings alongside the new edge-offset lines.
2026-08-04 15:46:53 +08:00
creatixchu
10ce8d8a45 fix(web): decide the sidebar's pointer leave by geometry, and tighten the gate
Review findings from the first round:

- ui-settings renders its full-viewport panel as a fixed-position DESCENDANT
  of the sidebar column, so `pointerleave` never fires when the pointer moves
  onto it and the bars stayed drawn after it closed. Leaving is now decided
  against the column's box from a document-level pointermove that exists only
  while the bars are drawn; the element's own leave stays for the pointer that
  leaves the window.
- The rebind gate judges the rule rather than each declaration, so a pair that
  mixes `transparent` with an l2 hover no longer passes, and the elevation
  half compares whole values instead of token shape.
- Hiding no longer exempts a sheet from the elevated-surface rebind check.
- The e2e polls the reveal before reading a colour for the golden, and pins
  that a pointerless scroll draws no thumb.
2026-08-04 15:42:39 +08:00
creatixchu
398ab58a69 Merge remote-tracking branch 'origin/master' into worktree/composer-caret-binding 2026-08-04 15:40:27 +08:00
imccyu
bcf595f41c Merge pull request #1370 from deepseek-harness/codex/fix-headless-sigint
fix(cli): bound telemetry shutdown and honor repeated signals
2026-08-04 15:38:11 +08:00
fz
eaf5b879c6 fix(docs): remove stale TUI source references 2026-08-04 15:25:30 +08:00
imccyu
2a828f09da Merge remote-tracking branch 'origin/master' into feat/turn-running-time 2026-08-04 15:22:28 +08:00
fz
193d918856 Merge remote-tracking branch 'origin/master' into codex/fix-headless-sigint
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/cli/README.md
#	apps/cli/README.zh.md
#	apps/cli/config/base.cordis.yml
2026-08-04 15:18:48 +08:00
creatixchu
ef2fbdfc19 fix(web): preserve focus when restoring drafts 2026-08-04 15:12:11 +08:00
creatixchu
a030397aca feat(web): draw the sidebar's scrollbar only under the pointer
The session list overflows after a handful of sessions, and its scrollbar
was drawn permanently in a column that is at rest most of the time.

SidebarRoot now tracks the pointer over the whole column and rebinds
ui-theme's scrollbar indirection pair to `transparent` while it is
outside, keeping the thumb for 2s after the pointer leaves so it does not
blink out on the way past. Rebinding colour leaves the list's
`scrollbar-gutter: stable` reservation in force, so revealing the bar
moves no row.

ui-theme's gate now states the widened contract: a rebind targets an -l2
token pair or `transparent`, and nothing else.
2026-08-04 15:05:32 +08:00
_Kerman
099edf1f4b Merge pull request #1381 from deepseek-harness/xtr/sidebar-session-spacing
fix(web): tighten sidebar session spacing
2026-08-04 15:04:19 +08:00
_Kerman
369fad9faf fix(web): inset sidebar scrollbar by 2px 2026-08-04 14:56:30 +08:00
imccyu
9f33f1d652 Merge pull request #1391 from deepseek-harness/worktree-tsx-map
fix(client): correct sourcemap in devtools
2026-08-04 14:56:08 +08:00
imccyu
4af4c10075 Merge pull request #1161 from deepseek-harness/agent/reasoning-chunk-stress-test
perf(web): optimize reasoning chunk stress
2026-08-04 14:47:41 +08:00
creatixchu
4e024da35a Merge origin/master into worktree/composer-caret-binding 2026-08-04 14:44:09 +08:00
imccyu
b9d768b6f2 fix(web): stabilize reasoning stream validation 2026-08-04 14:37:35 +08:00
imccyu
6f1d443c59 feat: optimize chat think 2026-08-04 14:37:35 +08:00
kingwl
a44c8797b6 test(web): add opt-in reasoning chunk stress lane 2026-08-04 14:37:31 +08:00
Wenlu Wang
3c436d781e Merge pull request #1065 from deepseek-harness/codex/webui-complex-perf-case
fix(web): preserve reader intent in long conversations
2026-08-04 14:36:42 +08:00
imccyu
9c309dc03e docs(client): update plugin loading RFC 2026-08-04 14:36:31 +08:00
kingwl
eb628f979b test(web): align long-chat contracts with master 2026-08-04 14:23:34 +08:00
kingwl
e53dcd56c7 test(web): keep scroll fixture markers private 2026-08-04 14:23:34 +08:00
kingwl
9b91e5312c fix(web): narrow chat scroll provenance 2026-08-04 14:23:34 +08:00
kingwl
8de33e42f7 fix(web): preserve chat scroll ownership 2026-08-04 14:23:34 +08:00
kingwl
bf6cb38fbc test(web): expand long-chat regression and performance coverage 2026-08-04 14:23:34 +08:00
kingwl
6514a59d5d fix(ui-conversation): preserve semantic chat scroll position 2026-08-04 14:23:34 +08:00
kingwl
1cc59ae78e test(web): split long conversation performance cases 2026-08-04 14:23:34 +08:00
kingwl
9784d6c932 test: register web performance entry 2026-08-04 14:23:34 +08:00
kingwl
7f0b8a7e87 test: measure live web streaming performance 2026-08-04 14:23:34 +08:00
kingwl
a435aae538 test: add opt-in web performance scenario 2026-08-04 14:23:34 +08:00
imccyu
6c6d933732 fix(client): load plugin bundles as external scripts 2026-08-04 14:18:47 +08:00
_Kerman
c1ac85c15f fix(web): keep sidebar scrollbar inside inset 2026-08-04 14:11:54 +08:00
_Kerman
b57e29db59 fix(web): tighten sidebar session spacing 2026-08-04 14:11:54 +08:00
Turtle
64f9a83bd6 Merge pull request #1369 from deepseek-harness/codex/remove-dsh-tui-entrypoint
cleanup: remove TUI package and legacy dsh entrypoints
2026-08-04 14:11:37 +08:00
Turtle
4b591c0abc Merge pull request #1059 from deepseek-harness/perf/snapshot-file-parallelism
perf(test): run replay snapshot files in parallel
2026-08-04 13:49:57 +08:00
Turtle
bc26a366dd test(acp-snapshot): cover the waitForEventAfterTurnEnd step
Success and timeout paths plus the before-newSession guard, restoring
per-file 100% on harness.ts.
2026-08-04 13:25:39 +08:00
Turtle
5fc420c5c0 test(acp-snapshot): wait for the durable goal pause before disposal
The goal scenario asserted a paused revision-2 goal, but the pause is
appended only after cancellation reaches idle — after turn/end. Under
parallel snapshot files the subprocess could dispose before the pause
record persisted, folding the log to an active revision-1 goal.

Add a waitForEventAfterTurnEnd input step (the turn-end/title waiters'
shape, parameterized by event type) and use it in the goal scenario to
hold the subprocess open until the goal-state record lands.
2026-08-04 13:25:39 +08:00
Turtle
ecdcc218b6 perf(test): run replay snapshot files in parallel
The snapshot config serialized all 13 files for every mode, but the
fixture-writing rationale only holds for record (real API quota per
scenario) and refresh (write-back harvests volatile values from
fixtures on disk). Replay — the keyless default and the CI mode — is
read-only with a unique temp dir per scenario subprocess, and the
suite factory already runs replay scenarios concurrently in-file.

Narrow the serialization to non-replay modes: pnpm test:snapshot drops
from ~49s to ~33s wall; record/refresh stay fully serial.
2026-08-04 13:25:28 +08:00
Turtle
10bb9cbf4a cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00