deepseek-harness/apps/web/tests
Yichen Jiang 89ae94d89f fix(web): stop leaking ask_user_question into every preset
`ui-question`'s node half called `ctx.tools.register` on the host context.
`ScopedLayers.merge()` combines the global layer with the agent's exact-scope
layer, and an unscoped registration lands in the global one — so the tool
reached every agent no matter which preset composed it. `core-web`, sold as a
two-tool benchmark surface, really presented three.

Rendering a question is a host UI capability; having the tool is an agent
capability, and only a preset decides that. The node half is now empty and the
`tool-ask-user` row moved into the preset that wants it. The TUI keeps its own
row, having no presets.

The composition tests now assert the global tool layer is EMPTY, which is the
invariant that would have caught this: any tool outside a preset reaches every
agent. The browser lane's composition, seeded-history, and hermetic-skill
assertions address their registries through a composed agent for the same
reason — those services are per session now, and the host cannot resolve an
`isolate` realm by name.
2026-08-07 02:57:30 +08:00
..
snapshots test(web): cover core profile request header 2026-08-06 20:41:19 +08:00
support fix(web): verify current GUI updates end to end 2026-07-29 11:22:48 +08:00
access-confirmation.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/custom-deepseek-models 2026-08-03 16:20:55 +08:00
approval-composer.e2e.ts Merge origin/master into worktree/composer-caret-binding 2026-08-04 14:44:09 +08:00
bash-abort-row.e2e.ts test(web): follow the structured abort message in the bash-abort-row scenario 2026-08-03 20:57:26 +08:00
built-boot.snapshot.ts fix(fixture): mirror context breakdown projection 2026-08-06 00:21:17 +08:00
chat-continuous-conversation.e2e.ts test(web): align long-chat contracts with master 2026-08-04 14:23:34 +08:00
chat-long-interactions.e2e.ts test(web): await stopped queue state 2026-08-04 15:09:55 +08:00
chat-scroll-contract.e2e.ts test(web): align snapshots with responsive chrome 2026-08-04 17:16:53 +08:00
chat-scroll-fixture.ts Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification 2026-08-05 21:42:33 +08:00
code-mode-round.e2e.ts fix: remove scoped bash 2026-07-31 20:47:55 +08:00
complex-history.perf.ts Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification 2026-08-05 13:53:35 +08:00
composer-draft-scroll.e2e.ts Merge origin/master into worktree/composer-caret-binding 2026-08-04 14:44:09 +08:00
composer-tab-geometry.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/composer-scrollbar-gutter 2026-08-05 15:36:06 +08:00
cordis-tool-round.e2e.ts Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification 2026-07-31 22:16:40 +08:00
core-web-profile.snapshot.ts test(web): cover core profile request header 2026-08-06 20:41:19 +08:00
details-session-lifecycle.e2e.ts cleanup(web): give adding a Workspace one route 2026-07-31 15:47:40 +08:00
goal-bar.e2e.ts fix(web): single-flight goal clear 2026-07-31 20:54:23 +08:00
goal-bar.overlay.yml fix(web): single-flight goal clear 2026-07-31 20:54:23 +08:00
hmr-live.e2e.ts Merge fix/web-agent-runtime-context into fix/web-gui-feedback-loop 2026-08-01 22:15:36 +08:00
lifecycle-chrome.e2e.ts Merge remote-tracking branch 'origin/master' into codex/web-slash-fuzzy-search 2026-08-06 14:48:35 +08:00
live-interactions.e2e.ts test(web): wait on the request marker button, not the hairline row 2026-08-03 19:37:52 +08:00
markdown-cjk-strong.e2e.ts test: stabilize markdown web snapshots 2026-08-06 15:37:40 +08:00
markdown-images.e2e.ts test(web): pin the remaining markdown fixture's event times 2026-08-06 16:24:20 +08:00
markdown-inline-code-links.e2e.ts test: stabilize markdown web snapshots 2026-08-06 15:37:40 +08:00
math-rendering.e2e.ts fix(web): localize stats and close stale context meter 2026-08-06 00:21:34 +08:00
message-actions.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/custom-deepseek-models 2026-08-03 19:02:29 +08:00
models-settings.e2e.ts fix(web): address UI polish review feedback 2026-08-04 16:25:09 +08:00
navigation-panes.e2e.ts test(web): expand long-chat regression and performance coverage 2026-08-04 14:23:34 +08:00
onboarding-deepseek-config.e2e.ts fix(ui): drop stale react-dom deps and address onboarding review 2026-08-06 21:08:20 +08:00
permission-policy-context.e2e.ts fix(web): pass the scaffold root in the new permission-policy scenario 2026-07-31 16:58:42 +08:00
pin-browse-picker.overlay.yml fix: retire leftovers of the removed $DSH_HOME/config.yaml personal overlay 2026-08-06 17:28:58 +08:00
plan-review.e2e.ts feat(client): surface pending session interactions 2026-08-04 17:15:10 +08:00
pwsh-terminal.e2e.ts fix(web): probe pwsh through the executor's path resolution 2026-08-05 11:42:43 +08:00
pwsh-terminal.overlay.yml feat(pwsh): render pwsh calls as bash-shaped terminal cards in the Web UI 2026-08-05 02:05:06 +08:00
question-composer.e2e.ts feat(client): surface pending session interactions 2026-08-04 17:15:10 +08:00
queue-actions.e2e.ts test(web): await stopped queue state 2026-08-04 15:09:55 +08:00
remote-welcome.e2e.ts fix(web): unblock remote welcome onboarding 2026-08-02 12:56:31 -07:00
replay-round-trip.e2e.ts Merge fix/web-agent-runtime-context into fix/web-gui-feedback-loop 2026-08-01 22:15:36 +08:00
scaffold-hermetic.e2e.ts fix(cli): declare the packages the shipped presets name 2026-08-07 02:51:09 +08:00
scaffold.ts fix(web): keep host-plane services out of the preset, and pin the lane's skill roots 2026-08-07 02:33:53 +08:00
search-card.snapshot.ts fix(client): load plugin bundles as external scripts 2026-08-04 14:18:47 +08:00
seeded-history.e2e.ts fix(web): stop leaking ask_user_question into every preset 2026-08-07 02:57:30 +08:00
settings-chrome.e2e.ts feat(web): open the local settings file 2026-08-04 16:59:37 +08:00
shipped-composition.e2e.ts fix(web): stop leaking ask_user_question into every preset 2026-08-07 02:57:30 +08:00
sidebar-scrollbar.e2e.ts Merge origin/master into worktree/sidebar-scrollbar-reveal 2026-08-04 15:46:53 +08:00
skill-invocation-policy.e2e.ts cleanup(web): give adding a Workspace one route 2026-07-31 15:47:40 +08:00
smoke-real.e2e.ts Merge remote-tracking branch 'origin/master' into feat/profile-plugin-management 2026-08-06 06:55:42 +08:00
startup-auto-selection.e2e.ts fix(ui): preserve Hero tree when selecting a Workspace 2026-08-06 18:01:11 +08:00
steering.e2e.ts refactor(agent-loop): drop the steering/message session event 2026-08-03 16:04:26 +08:00
subagent-conversation.e2e.ts fix(web): preserve subagent catalog styling 2026-08-03 18:24:25 +08:00
support.ts Merge remote-tracking branch 'origin/master' into worktree/custom-deepseek-models 2026-08-03 16:20:55 +08:00
trajectory-virtualization.e2e.ts fix(trajectory): bound work during long streams 2026-08-04 20:37:33 +08:00
vite-entry.e2e.ts fix(web): verify current GUI updates end to end 2026-07-29 11:22:48 +08:00
web-search-round.e2e.ts fix(ui-primitives): keep two-digit source markers out of the scroll clip 2026-08-03 18:58:44 +08:00
workspace-management.e2e.ts fix(client): address CI and review findings on blank-session reuse 2026-08-05 12:21:09 +08:00