Commit Graph

398 Commits

Author SHA1 Message Date
creatixchu
07448093c5 fix(web): drop the redundant second mirror
The first version coupled the layers from two places: a `scroll` listener
and a layout effect keyed on the committed draft. Mutation-testing each
hook alone against the built client shows the effect never fires the only
assignment that matters — with just the layout effect disabled the browser
scenario stays green, while disabling just the listener fails it.

Both premises behind the effect were wrong. Typing scrolls the caret into
view, which is an ordinary `scroll`. A draft that shrinks past the current
offset clamps both layers to the same maximum, because their extents are
equal — measured in chromium at 964/964, 1012/1012, 844/844 and 820/820 for
plain, soft-wrapped, unbreakable-run and highlighted drafts — and the
textarea's clamp fires `scroll` too.

The hazard the effect was imagined to cover does not exist either: React
replacing every child of the backdrop when the decoration set changes shape
preserves `scrollTop` (measured: 300 stays 300 through a full child
replacement), and the only replacement that zeroes it shrinks the content
below the offset, which is the clamp case already covered.

The e2e's edit case survives, retitled to say what it actually pins: that
typing is not a separate case needing its own mirror. The unit spec now
asserts the backdrop tracks a second move back to the top, which a one-shot
mirror would fail.
2026-07-31 12:02:38 +08:00
creatixchu
a7b7066267 fix(web): scroll the composer's glyph layer with its textarea
A composer draft past the 14-line cap could not be scrolled: the caret and
the selection moved, but the words stayed frozen at line 1, so the tail of
anything longer than the cap was unreachable while writing it.

The composer paints its text in two stacked layers. The textarea owns the
value, the selection and the caret but renders its own glyphs transparent;
every visible character is painted by the decoration backdrop beneath it,
which also carries the claim-token highlight, the chips and the ghost hint.
The backdrop is `inset: 0; overflow: hidden` — clipped, not scrolled — and
nothing linked its offset to the textarea's. Below the cap both layers rest
at 0, which is why the defect hid behind every short-draft screenshot and
fixture.

InputBar now mirrors the textarea's scrollTop onto the backdrop, from a
`scroll` listener (every gesture and every caret-driven scroll) and from a
layout effect keyed on the committed draft (an edit reflows both layers
without necessarily firing a scroll event).

Scrolling is layout, so jsdom cannot show this: the unit spec stubs both
offsets and proves the mirroring paths run, while a new browser scenario
measures the user-visible fact against the built client with a DOM Range
over the backdrop's own text — after a wheel gesture over a 40-line draft
the last line is on screen and the first has scrolled out. Confirmed both
directions: with the mirroring reverted and the packages rebuilt, the
golden reads `last draft line is on screen: false` while `textarea moved:
true`.
2026-07-31 11:53:04 +08:00
imccyu
9525cc9db2 Merge pull request #1005 from deepseek-harness/codex/new-task
Open command menu from composer plus button
2026-07-31 11:12:26 +08:00
imccyu
d6da16b7f3 Merge branch 'master' into codex/basic-session-search 2026-07-31 10:23:52 +08:00
imccyu
ce57438ac0 Merge branch 'master' into codex/new-task 2026-07-31 10:23:14 +08:00
imccyu
b10bcf2d44 test(web): re-record the hero golden for the localized search placeholder 2026-07-31 04:56:51 +08:00
imccyu
5ccebb4741 test(web): align the search e2e anchor with the localized placeholder 2026-07-31 04:46:22 +08:00
imccyu
59ce4086ae Merge remote-tracking branch 'origin/master' into mergebot/pr711
# Conflicts:
#	packages/client/ui-workspace/src/client/WorkspaceBrowser.tsx
#	packages/client/ui-workspace/src/client/index.ts
#	packages/client/ui-workspace/src/client/rows/Rows.tsx
#	packages/client/ui-workspace/src/client/tree.ts
#	packages/client/ui-workspace/tests/apply.spec.ts
#	packages/client/ui-workspace/tests/rows.spec.tsx
#	packages/client/ui-workspace/tests/tree.spec.ts
#	packages/client/ui-workspace/tests/workspace-browser.spec.tsx
2026-07-31 04:37:08 +08:00
imccyu
9433259f05 Merge remote-tracking branch 'origin/master' into mergebot/pr1005
# Conflicts:
#	docs/module-graph.md
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.md
#	packages/client/ui-conversation/README.zh.md
#	packages/client/ui-conversation/src/client/apply.ts
#	packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
#	packages/client/ui-conversation/tests/input-bar.spec.tsx
#	packages/client/ui-conversation/tests/input-matrix.spec.tsx
#	packages/client/ui-plan/README.i18n.yaml
#	packages/client/ui-plan/README.md
#	packages/client/ui-plan/README.zh.md
#	packages/client/ui-plan/src/client/PlanModeControl.tsx
#	packages/client/ui-plan/src/client/index.ts
#	packages/client/ui-plan/tests/browser-plugin.spec.ts
#	packages/client/ui-plan/tests/plan-mode-control.spec.tsx
2026-07-31 03:47:24 +08:00
imccyu
4957c01264 test(web): refresh goldens for the unified tool-row expand after the locale merge 2026-07-31 03:03:34 +08:00
imccyu
810b45a377 Merge remote-tracking branch 'origin/master' into mergebot/pr1008
# Conflicts:
#	apps/web/tests/snapshots/cordis-tool-round/ui.expected.md
#	apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
#	apps/web/tests/snapshots/steering/settled.expected.md
#	packages/client/ui-conversation/src/client/chat/ChatView.tsx
#	packages/client/ui-conversation/src/client/chat/GenericToolCard.tsx
#	packages/client/ui-conversation/src/client/chat/ToolRow.tsx
#	packages/client/ui-conversation/src/client/contract/terminal-card-model.ts
#	packages/client/ui-conversation/src/client/skeleton/DetailsPanel.tsx
#	packages/client/ui-conversation/src/client/toolviews/ask-question-row.tsx
#	packages/client/ui-conversation/src/client/toolviews/bash-sample.tsx
#	packages/client/ui-conversation/src/client/toolviews/todo-row.tsx
#	packages/client/ui-conversation/tests/chat-tool-row.spec.tsx
#	packages/client/ui-conversation/tests/terminal-card.spec.tsx
#	packages/client/ui-trajectory/tests/client-bundle.spec.ts
2026-07-31 03:00:08 +08:00
imccyu
7730ffad4e test(web): refresh plan-review and seeded-history goldens after master merge 2026-07-31 02:45:22 +08:00
imccyu
72a7307826 chore: regenerate module graph and refresh composer goldens after master merge 2026-07-31 02:28:43 +08:00
imccyu
8933d63143 test(web): align e2e anchors and goldens with the unified tool-row expand 2026-07-31 02:16:28 +08:00
imccyu
119cc05577 fix: docs/static 2026-07-31 02:13:53 +08:00
imccyu
d752405ad1 feat: locale update all 2026-07-31 02:13:53 +08:00
imccyu
1e10966ef6 wip
fix: docs
2026-07-31 02:13:53 +08:00
imccyu
2e034bbbd3 Merge remote-tracking branch 'origin/master' into mergebot/pr711
# Conflicts:
#	apps/cli/README.i18n.yaml
#	docs/module-graph.md
#	packages/client/connection/README.i18n.yaml
#	packages/client/runtime/README.i18n.yaml
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/src/api-proxy.ts
2026-07-31 02:02:47 +08:00
imccyu
4e7e99d748 Merge remote-tracking branch 'origin/master' into mergebot/pr1005
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 01:58:09 +08:00
imccyu
47dafc28bc Merge pull request #957 from deepseek-harness/worktree-guiopentelemetry
Wire session telemetry (OTel) into the dsh web composition
2026-07-31 01:49:38 +08:00
imccyu
bd1c69149d fix(web): review round 1 — loud opt-out, headless drain, scaffold isolation, docs
- resolveTelemetryPatch: extracted pure switch resolution (unit-tested);
  fails loud when DSH_TELEMETRY_DISABLED is set but the row is absent, and
  documents that ANY non-empty value (including '0'/'false') disables.
- runHeadless: SIGINT/SIGTERM now dispose the tree before exit so the
  telemetry tail and shutdown marker drain (Node's default signal exit
  skips disposal).
- web.cordis.yml: explicit maxQueueSize beside maxExportBatchSize (the
  single-batch drain invariant no longer leans on an SDK default), comment
  covers exportTimeoutMillis's role and links the Agent Note.
- apps/web scaffold: disable telemetry-otel — fixture sessions must never
  leave the process.
- apps/cli README (en/zh + pairing): document the default endpoint, both
  env seams, and the no-redaction disclosure.
2026-07-31 01:34:42 +08:00
Tianyi Cui
cc119e39a6 Merge master into fix/turn-actions 2026-07-31 01:29:03 +08:00
imccyu
ecbd8babc1 Merge remote-tracking branch 'origin/master' into mergebot/pr711
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/cli/README.md
#	apps/cli/README.zh.md
#	apps/cli/cordis.yml
#	apps/cli/package.json
#	docs/config-catalog.md
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/src/client/contract/sessions.ts
#	packages/client/test-runtime/src/sessions.ts
#	packages/client/ui-workspace/README.i18n.yaml
#	packages/client/ui-workspace/README.md
#	packages/client/ui-workspace/README.zh.md
#	packages/client/ui-workspace/src/client/WorkspaceBrowser.tsx
#	packages/client/ui-workspace/src/client/tree.ts
#	packages/client/ui-workspace/tests/apply.spec.ts
#	packages/client/ui-workspace/tests/tree.spec.ts
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/host/apiproxy/src/api/index.ts
#	packages/host/apiproxy/tests/client-handler.spec.ts
#	packages/host/apiproxy/tests/rpc-schemas.spec.ts
#	pnpm-lock.yaml
2026-07-31 01:28:15 +08:00
Tianyi Cui
145a5eb9da Merge master into fix/turn-actions 2026-07-31 01:27:56 +08:00
Yichen Jiang
aa888d1c4a Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 01:10:16 +08:00
Yichen Jiang
c71af0f3bb Merge latest master into worktree-llm-web-config 2026-07-31 01:09:50 +08:00
imccyu
b6917b6e62 Merge pull request #981 from deepseek-harness/worktree/command-row-copy
feat(ui): drop the slash and the argument echo from the command row
2026-07-31 01:09:06 +08:00
Yichen Jiang
11ffab7400 Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 01:06:55 +08:00
Yichen Jiang
a37a90548a Merge latest master into worktree-llm-web-config 2026-07-31 01:06:28 +08:00
imccyu
f26a12ba3f test(web): re-record plan-review golden for slash-free command row
The plan-review golden landed on master (63c477f14) recorded against the
old command-row rendering; this branch drops the slash and the argument
echo, so the approved-state transcript line changes accordingly.
2026-07-31 00:40:04 +08:00
Tianyi Cui
dc0c52bb03 Merge commit 'aab64371402d93293bde384139aaa607906928a8' into worktree/pr977-merge-20260731 2026-07-31 00:32:10 +08:00
Yichen Jiang
52c997d01d Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 00:22:45 +08:00
imccyu
e4e78e7a31 Merge remote-tracking branch 'origin/master' into mergebot/pr981 2026-07-31 00:22:36 +08:00
Yichen Jiang
ce3a75ecca Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config 2026-07-31 00:21:49 +08:00
Wenlu Wang
edefdd96b9 Merge remote-tracking branch 'origin/master' into codex/new-task 2026-07-31 00:10:46 +08:00
Yichen Jiang
39072f8c58 Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config 2026-07-31 00:07:11 +08:00
Yichen Jiang
307fea8ae9 Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config 2026-07-31 00:06:29 +08:00
imccyu
95242698e0 Merge branch 'master' into worktree/command-row-copy 2026-07-31 00:06:04 +08:00
imccyu
bf11016bc1 Merge remote-tracking branch 'origin/master' into worktree/approval-panel-max-height 2026-07-31 00:05:48 +08:00
imccyu
f93b134c44 fix: tests 2026-07-31 00:04:45 +08:00
Yichen Jiang
fe59dd3530 Merge worktree-llm-web-config (939, with latest master) into worktree/onboarding-deepseek-config
# Conflicts:
#	apps/web/tests/scaffold.ts
2026-07-31 00:01:28 +08:00
Yichen Jiang
4ef128cd50 test(web): drop the host-skill context row from the conversation goldens
These goldens were recorded on a machine with personal skills under ~/.dsh and
~/.agents, so every one of them pinned a context-injection row a clean runner
cannot produce — which is why the browser lane failed on CI and passed
locally. master's scaffold fix confines skill-local's host-level roots to the
temp world; re-recording against it removes the row and nothing else.
seeded-history keeps its row: that scenario seeds the event itself.
2026-07-31 00:00:31 +08:00
imccyu
f332ebab16 Merge branch 'master' into worktree/approval-panel-max-height 2026-07-30 23:57:47 +08:00
imccyu
236fd794f9 Merge branch 'master' into worktree/plan-review-layout 2026-07-30 23:57:20 +08:00
Yichen Jiang
86ae2b70d5 Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config 2026-07-30 23:57:01 +08:00
imccyu
6842a2826f Merge branch 'master' into worktree/command-row-copy 2026-07-30 23:52:49 +08:00
imccyu
c6c0f5de6a Merge branch 'master' into worktree/approval-panel-max-height 2026-07-30 23:49:19 +08:00
imccyu
7c086e40be Merge branch 'master' into worktree/plan-review-layout 2026-07-30 23:48:19 +08:00
imccyu
5c4398c96c Merge branch 'master' into worktree/command-row-copy 2026-07-30 23:45:49 +08:00
imccyu
57845e02ee Merge branch 'master' into xtr/trajectory-timeline-click-focus 2026-07-30 23:44:32 +08:00