Commit Graph

2770 Commits

Author SHA1 Message Date
imccyu
7f3a2dae91 fix(web): quiesce websocket teardown 2026-08-04 16:42:50 +08:00
imccyu
8b4ddfe60c feat(web): move connection downlinks to WebSocket 2026-08-04 16:07:35 +08:00
fz
eaf5b879c6 fix(docs): remove stale TUI source references 2026-08-04 15:25:30 +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
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
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
imccyu
9c309dc03e docs(client): update plugin loading RFC 2026-08-04 14:36:31 +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
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
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
10bb9cbf4a cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
Chinesezjc
6601738e32 Merge origin/master into fix/web-sources-scroll 2026-08-04 13:11:40 +08:00
Turtle
ec4e130e31 fix(jsonl): recover truncated zstd frames on node 26 2026-08-04 11:58:38 +08:00
fz
f0e5a39d19 Merge remote-tracking branch 'origin/master' into codex/fix-headless-sigint 2026-08-04 11:07:36 +08:00
Turtle
5329bef04d perf(tui): incremental step timing and card render caches for long sessions
Resuming a long session (196k events, 2.2k steps, 1.8k tool cards) took
~12s to render and ~800ms to echo one keystroke:

- Every step's timing footer called stepTimingAt, which replayed the whole
  event log per footer - O(steps x events) on the initial render.
- pi-tui re-renders every component each frame and relies on per-component
  line caches, but ToolCardComponent/ContextCardComponent built throwaway
  Text/Markdown instances inside render(width), re-wrapping every settled
  card's output on every keystroke.

Replace the per-footer replay with one shared StepTimingTracker per chat
mount (single O(events) cursor over the append-only log), and cache card
rows by width via CardLineCache, dropped by every state mutator and
invalidate().

Measured (tmux 200x50, 196k-event session): resume prompt-ready ~12s -> ~7.6s;
per-keystroke echo ~800ms median -> ~11ms.
2026-08-04 00:37:10 +08:00
Huanqi Cao
b978c62a22 Merge pull request #1119 from deepseek-harness/feat/ripgrep-packaged-binary
feat(fs-search): spawn the packaged ripgrep binary through the subprocess seam
2026-08-03 23:31:29 +08:00
fz
003d297442 Merge remote-tracking branch 'origin/master' into codex/fix-headless-sigint 2026-08-03 22:21:46 +08:00
Turtle
05a76c3d98 Merge pull request #1355 from deepseek-harness/codex/remove-invariants-shipped-config
cleanup(cli): omit invariants from shipped configs
2026-08-03 22:18:51 +08:00
fz
ef23b88ad4 fix(cli): bound telemetry shutdown on signals
Refs #1356
2026-08-03 22:08:47 +08:00
Turtle
414c310324 cleanup(cli): omit invariants from shipped configs 2026-08-03 22:04:53 +08:00
Turtle
25d8bfac31 Merge remote-tracking branch 'origin/master' into perf/tui-resume-scan
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
2026-08-03 21:16:51 +08:00
Turtle
7a26214a81 feat(tui): resolve resume titles through the projection cache
session-title already registers a title projection unit; /resume now
reads it instead of scanning logs: live rows from the registry
snapshot, persisted rows from the durable checkpoint row
(cachedSnapshot, zero I/O), and only rows without a usable checkpoint
pay a coldSnapshot — checkpoint plus readFrom tail, written back so the
next scan is metadata-only. Cold reads are bounded by the new
resumeScanConcurrency config; compositions without the cache fall back
to the bounded readTitleSnapshots batch. The TUI overlay mounts the
projection registry, storage, and projection-cache rows over the same
storages root the web surface uses, so checkpoints serve both.
2026-08-03 21:13:52 +08:00
Huanqi Cao
0ee198d70e Merge remote-tracking branch 'origin/master' into feat/ripgrep-packaged-binary 2026-08-03 20:19:49 +08:00
Chinesezjc
e6d6e192d5 fix(ui-primitives): keep two-digit source markers out of the scroll clip
Making `.sources` a scroll container turned its `padding-left` from spacing
into a correctness constraint. A scroll container clips inline-start overflow
with no way to scroll it back, and `::marker` is right-aligned to the content
edge, so past nine sources the markers rendered as `0.` and `1.` where `10.`
and `11.` belonged.

`searchMaxResults` is an unbounded positive integer, so size the padding in
`em` against the list's own font to hold a three-digit marker. The browser e2e
measures a `999. ` marker in that inherited font and requires the computed
padding to be at least that wide, pinning the room against the widest marker
rather than one fixture's source count.
2026-08-03 18:58:44 +08:00
imccyu
fc5ee9f786 refactor(client): expose loopback state through connection 2026-08-03 18:35:26 +08:00
imccyu
e47ad8e393 Merge remote-tracking branch 'origin/master' into agent/fix-remote-welcome-onboarding 2026-08-03 18:19:24 +08:00
Chinesezjc
2b02202ba1 Merge remote-tracking branch 'origin/master' into fix/web-sources-scroll
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-08-03 18:18:25 +08:00
imccyu
ae5ee37591 Merge remote-tracking branch 'origin/master' into mergebot/pr927-r3
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/tui/src/components/dialogs.ts
2026-08-03 17:57:50 +08:00
Turtle
a097e5b9b3 Merge remote-tracking branch 'origin/master' into perf/tui-resume-scan
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
2026-08-03 17:37:49 +08:00
Turtle
d764cc800a Merge remote-tracking branch 'origin/master' into perf/tui-resume-scan
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
2026-08-03 17:29:18 +08:00
imccyu
6b79907ffd Merge remote-tracking branch 'origin/master' into worktree/fix-multi-select-custom-answer 2026-08-03 17:19:53 +08:00
Turtle
3b58ed65b7 feat(tui): wrap and page question dialogs 2026-08-03 17:19:40 +08:00
Turtle
f128e126d7 Merge remote-tracking branch 'origin/master' into perf/tui-resume-scan
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/tui/src/components/dialogs.ts
2026-08-03 17:06:28 +08:00
imccyu
070f371370 Merge branch 'master' into worktree/fix-multi-select-custom-answer 2026-08-03 16:55:48 +08:00
Turtle
2c78041878 Merge remote-tracking branch 'origin/master' into codex/pr-1037-resolution
# Conflicts:
#	docs/config-catalog.md
#	packages/ui/tui/README.i18n.yaml
2026-08-03 16:49:58 +08:00
Turtle
4edb828364 Merge remote-tracking branch 'origin/master' into codex/pr-1037-resolution
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
2026-08-03 16:49:18 +08:00
Ziya
aaa2102246 Merge branch 'master' into agent/fix-remote-welcome-onboarding 2026-08-03 04:49:00 -04:00
Chinesezjc
1d3a807e49 Merge remote-tracking branch 'origin/master' into fix/web-sources-scroll 2026-08-03 16:48:14 +08:00
Chinesezjc
a0b4b65ab8 test(web): pin the source list's scroll geometry in the assembled browser
jsdom resolves no CSS Modules layout and reports scrollHeight === clientHeight
for every element, so the unit test cannot witness the scroll the .sources
max-height produces. Drive it in the real browser instead.

The web-search-round search double now returns 12 provider results with a
title, snippet, and date each. That pins the seam's cap end to end for the
first time in a real composition — searchMaxResults keeps 8, the model-visible
text carries the kept titles and none of the dropped URLs, meta.truncated is
true — and 8 such rows overflow the 320px container. A case after the aria
golden expands the row and asserts 8 <li>, no button, the truncation
indicator, and computed max-height/overflow-y with scrollHeight > clientHeight.

The recorded stream and the aria golden are unchanged: replay is a positional
cursor over the fixture's chunks and the search double is a separate local
endpoint, while the card is collapsed at capture time.
2026-08-03 16:46:05 +08:00
Yichen Jiang
3009bc5312 Merge pull request #1003 from deepseek-harness/worktree/web-remote-markdown-images
feat(web): render remote Markdown images
2026-08-03 16:41:00 +08:00
Turtle
7077d6befc refactor(tui): resume rows fold titles only, timestamp from artifact mtime
Rows no longer read logs for anything but the batch title fold: the
activity timestamp is a live session's last in-memory event time or the
artifact mtime via the optional sessionPersistence.locate(), falling
back to creation time; the last-turn, route, and goal columns are gone.
Route availability moves to the Enter-time preflight, which already
fully reads and replay-validates the one chosen log. The projectSessions
public API this PR had added to session-query is reverted — the change
is now confined to the TUI package.
2026-08-03 16:40:47 +08:00
Chinesezjc
19f2c45bb0 Merge remote-tracking branch 'origin/master' into fix/web-sources-scroll 2026-08-03 16:38:12 +08:00
Chinesezjc
140fdef85e docs(client-web): sync the web card contracts to the scrolling source list
The READMEs of ui-primitives and ui-conversation still documented the
removed maxSources prop, DEFAULT_WEB_MAX_SOURCES, CHAT_WEB_MAX_SOURCES,
and the head/tail collapse; the 2026-07-30 frontend note described the
same as current behavior. Restate all of them as the fixed-height scroll
container and cross-link the two notes both ways.

Bound the model-visible/card-visible correspondence: spill-policy's
tools/post-execute replaces an oversized result's content while leaving
presentationMeta whole, so the card's contract is the view it receives,
not the model's context.

Narrow the unit test's name and header comment to what jsdom establishes
(one <ol>, no expand control); jsdom does not resolve CSS Modules layout,
so the scroll geometry belongs to an assembled browser case.
2026-08-03 16:35:37 +08:00