Terra
346bfd23bf
Merge pull request #1866 from deepseek-harness/feature/workspace-picker-composer
...
feat(web): open workspace picker from the composer
2026-08-11 13:01:38 +08:00
Yichen Jiang
1a1c81f309
Merge remote-tracking branch 'origin/master' into worktree/web-background-tasks-display-258f7e
...
# Conflicts:
# docs/subsystems/tasks.i18n.yaml
# docs/subsystems/tasks.md
# docs/subsystems/tasks.zh.md
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/tasks/tasks-local/src/index.ts
# packages/tasks/tasks/README.i18n.yaml
# packages/tasks/tasks/README.md
# packages/tasks/tasks/README.zh.md
# packages/tasks/tasks/src/index.ts
2026-08-11 11:57:33 +08:00
NI0317
e3b4196ca0
Merge master into feature/workspace-picker-composer
2026-08-11 10:32:28 +08:00
imccyu
3e79f7106e
feat(client-runtime): add target-owned conversation snapshots
2026-08-11 03:29:04 +08:00
NI0317
cce148f20d
Merge master into feature/workspace-picker-composer
2026-08-10 16:50:03 +08:00
creatixchu
2fea703d67
Merge remote-tracking branch 'origin/master' into codex/pr-555-ci-fix
...
# Conflicts:
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# packages/client/ui-conversation/src/client/input/hub.ts
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/service-orchestration.spec.ts
2026-08-10 15:19:32 +08:00
NI0317
7b01a932b9
Merge master into feature/workspace-picker-composer
2026-08-10 14:37:38 +08:00
Yichen Jiang
0a0a75730f
Merge remote-tracking branch 'origin/master' into worktree/web-background-tasks-display-258f7e
2026-08-10 13:22:51 +08:00
imccyu
6648ff984a
Merge pull request #1817 from deepseek-harness/feat/web-queue-steer-all
...
feat(web): 空输入时 Ctrl/Cmd+Enter 将当前排队消息全部插话发送
2026-08-10 12:58:20 +08:00
creatixchu
3764ce62a5
Merge remote-tracking branch 'origin/master' into codex/pr-555-ci-fix
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/config-catalog.md
# docs/config-catalog.zh.md
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/client/connection/src/client/fixture.ts
# packages/host/apiproxy/src/api-proxy.ts
2026-08-10 12:33:36 +08:00
_Kerman
2e9f24b58e
Merge remote-tracking branch 'github/master' into feat/web-queue-steer-all
...
# Conflicts:
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/README.zh.md
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/service-orchestration.spec.ts
2026-08-10 10:21:56 +08:00
Yichen Jiang
c06f9041fc
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.i18n.yaml
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# docs/subsystems/attachment.i18n.yaml
# docs/subsystems/attachment.md
# docs/subsystems/attachment.zh.md
# docs/subsystems/core.i18n.yaml
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/README.i18n.yaml
# packages/README.md
# packages/README.zh.md
# packages/client/runtime/package.json
# packages/client/ui-conversation/package.json
# packages/client/ui-conversation/src/client/chat/AssistantMarkdown.tsx
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/compact/compact-basic/README.md
# packages/compact/compact-basic/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/src/api/sessions.ts
# packages/host/apiproxy/src/index.ts
# packages/host/apiproxy/tests/api-proxy-models.spec.ts
# packages/self-modification/tool-cordis/src/api-catalog.ts
# pnpm-lock.yaml
# scripts/type-equiv.manifest.json
2026-08-09 23:33:35 +08:00
Yichen Jiang
7dcefeda50
Merge branch 'stack/agent-profiles-5-web-ui' into stack/agent-profiles-8-authoring
...
# Conflicts:
# apps/cli/tests/web-agent-presets.e2e.ts
# packages/client/connection/README.i18n.yaml
# packages/client/connection/README.md
# packages/client/connection/README.zh.md
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-primitives/tests/icons.spec.tsx
# packages/client/ui-settings/src/client/contract/slots.ts
# packages/host/apiproxy/tests/api-proxy-agent-preset.spec.ts
2026-08-09 23:02:37 +08:00
Yichen Jiang
877364f7a4
Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui
...
# Conflicts:
# packages/client/ui-conversation/tests/input-bar.spec.tsx
2026-08-09 22:57:23 +08:00
Yichen Jiang
7ea8bad7ee
Merge branch 'stack/agent-profiles-5-web-ui' into stack/agent-profiles-8-authoring
...
# Conflicts:
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# docs/subsystems/tools.i18n.yaml
# docs/subsystems/tools.md
# docs/subsystems/tools.zh.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
2026-08-09 21:38:26 +08:00
Yichen Jiang
19b6a41564
Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui
...
# Conflicts:
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# scripts/doc-budgets.manifest.json
2026-08-09 21:36:55 +08:00
Tianyi Cui
25dcd7293c
docs: purge chain-of-thought leakage from prose
...
Delete design-session citations (decision/audit/plan ordinals, stack
positions), change narration, review choreography, and reviewer-addressed
justification from comments, JSDoc, docs, READMEs, Agent Notes, tests, and
generator templates; restate every affected fact as current-state contract
prose. Fix generated docs at their sources and regenerate the catalogs and
cordis-surface regions; re-paste type-equiv blocks; update every bilingual
counterpart and re-record the pairs. Record the citation rule in the
committed-artifact-citations Agent Note.
2026-08-09 21:10:59 +08:00
imccyu
522acc7432
test: update conversation assembly coverage and docs
2026-08-09 18:16:44 +08:00
Yichen Jiang
d73e81c482
Merge remote-tracking branch 'origin/master' into worktree/web-background-tasks-display-258f7e
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/subsystems/lsp.i18n.yaml
# docs/subsystems/tasks.md
# docs/subsystems/tasks.zh.md
# packages/client/README.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/tsconfig.json
# packages/tasks/tasks/README.i18n.yaml
# tsconfig.base.json
2026-08-09 13:49:34 +08:00
Yichen Jiang
eab0aeb9db
feat(web): list background tasks in the session header
...
The task registry has run every background bash, pwsh, pty-send, and
one-shot subagent since it landed, but only the model could read it: a
human at the Web client could not see that a build was running, tell a
finished task from a stuck one, or find its outcome anywhere but the
`run_in_background` tool card that printed an id and never updated.
Task state now reaches the browser as one whole-snapshot `session/tasks`
mux frame per session, pushed at every registry commit that changes what
that session can see. `TaskService` gains `onTasksChanged`, which is
owner-granular because owner-disposal removal is a change no per-task
record can express. The carrier reads the exact owner the listener hands
it, so a push stays correct while that scope tears down, and reads the
baseline through the non-resuming `ctx.agents.get` so listing never
revives a cold session. The client keeps a last-wins mirror on
`SessionListState`, and a new `dsh-client-ui-task` package renders it
beside the subagent catalog — rendering nothing at all until the session
has a task, so an ordinary conversation grows no new chrome.
Streamed per-task output and human-initiated cancellation are separate
phases; the note records why neither has to undo this channel, and why
no Web path may call the consuming `ctx.tasks.read()`.
2026-08-08 23:29:41 +08:00
Yichen Jiang
c0522f21d9
Merge branch 'stack/agent-profiles-5-web-ui' into stack/agent-profiles-8-authoring
2026-08-08 22:54:07 +08:00
Yichen Jiang
64c992238a
Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui
2026-08-08 22:51:17 +08:00
Tianyi Cui
5f755d5717
fix(web): keep Send beside subagent Stop
2026-08-08 21:05:58 +08:00
Hypatia May
5793614b86
feat(web): expose continuable subagent interrupt
...
The composer's single primary action now stops a running continuable
child: Session.cancel() routes a continuable address through
subagent.interrupt (ordinary sessions keep session.cancel; one-shot
addresses stay uncancellable), and InputBar switches the same Send button
to Stop while a continuable child runs. A running parent-offline child
keeps the default composer with disabled input so that Stop stays
reachable; the read-only takeover returns once it stops.
Refs #1535
2026-08-08 20:02:36 +08:00
imccyu
9ed33dfe4f
refactor(client): localize nested Tool call trees
2026-08-08 17:59:50 +08:00
Yichen Jiang
da05e5f058
test(gui): complete merged image input checks
2026-08-08 02:07:54 +08:00
Yichen Jiang
25d959aa08
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.md
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.zh.md
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md
# THIRD_PARTY_NOTICES.md
# apps/cli/composition.md
# apps/cli/config/base.cordis.yml
# apps/cli/package.json
# apps/cli/src/app-cli-entry.ts
# apps/cli/src/bin.ts
# apps/cli/tests/args.spec.ts
# apps/web/tests/built-boot.snapshot.ts
# apps/web/tests/navigation-panes.e2e.ts
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/README.i18n.yaml
# packages/bundle/README.i18n.yaml
# packages/client/connection/README.i18n.yaml
# packages/client/connection/README.md
# packages/client/connection/README.zh.md
# packages/client/connection/src/client/fixture.ts
# packages/client/connection/src/http-bridge.ts
# packages/client/connection/src/index.ts
# packages/client/connection/tests/fixture.spec.ts
# packages/client/connection/tests/node-half.spec.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/runtime/src/client/contract/session.ts
# packages/client/runtime/src/client/sessions/session.ts
# 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/chat/AssistantMarkdown.tsx
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.module.css
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/input/contract.ts
# packages/client/ui-conversation/src/client/input/facade.ts
# packages/client/ui-conversation/src/client/input/hub.ts
# packages/client/ui-conversation/src/client/locales.ts
# packages/client/ui-conversation/src/client/service.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationSession.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/apply-inject.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/input-matrix.spec.tsx
# packages/client/ui-conversation/tests/input-scenarios.spec.tsx
# packages/client/ui-conversation/tests/service-orchestration.spec.ts
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/client/ui-trajectory/tests/views.spec.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/rpc.ts
# packages/host/apiproxy/src/api/sessions.ts
# packages/host/apiproxy/src/index.ts
# packages/host/apiproxy/tests/api-proxy-models.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
# packages/llm/llm-pi-ai/README.i18n.yaml
# packages/llm/llm-pi-ai/README.md
# packages/llm/llm-pi-ai/README.zh.md
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm/README.i18n.yaml
# packages/ui/tui/README.md
# packages/ui/tui/README.zh.md
# packages/ui/tui/src/components/content.ts
# packages/ui/tui/src/components/transcript.ts
# packages/ui/tui/tests/tui.spec.ts
# pnpm-lock.yaml
2026-08-08 01:56:29 +08:00
Yif
0a248bcea8
feat(web): make the whole no-workspace composer card the picker trigger
...
The pick target grows from the read-only textarea to the full capsule:
the card owns the click, its disabled controls let pointer events fall
through, and a dashed l4 stroke with a business-blue hover marks the
affordance (an SVG dash ring — native dashed has a fixed pattern). The
card contains pointerdown so the open picker's outside-close cannot
race the reopen, which flickered the chip's expansion echo.
2026-08-07 17:06:01 +08:00
NI0317
c44c6c93c8
feat(web): open workspace picker from composer
2026-08-07 14:38:58 +08:00
_Kerman
4ede2798fe
fix(web): address review — placeholder key family, menu-open gate, plan precedence, note wording
2026-08-07 14:20:14 +08:00
NI0317
9597ff9bf7
feat(web): advertise whole-queue steering shortcut
2026-08-07 12:18:30 +08:00
Yichen Jiang
2b8a0a8cff
feat(web): choose the agent preset on the new-session screen
...
The composer seat spent nearly all its life disabled: a session's
composition is fixed once a turn has run. Move the choice to the
new-session screen beside the workspace picker, where it still works,
and let the session header report what a running session runs.
The hero pick is staged rather than applied — that screen precedes the
session it belongs to. It lands when a session becomes current and is
still blank, which covers both the session a workspace connect creates
and the blank one it reuses; riding `sessions.create` would miss the
second. It is spent on first use, matching the workspace picker.
Fix the durability the header field claimed but never had: `agentPreset`
was declared on `SessionHeader` and dropped by the JSONL header line, the
SQLite sessions row, the derived query index, and the cold list
projection, so every resumed session came back composed from nothing.
Add the web e2e lane that would have caught it — the one lane that mounts
the shipped roster, which needed `cordis:group` in the scaffold's Loader
builtins, as `mountRootInclude` already registers.
2026-08-07 00:41:50 +08:00
Yichen Jiang
a2ab09003f
feat(web): pick a session's agent preset from the composer
...
A seat in the composer tool row, left of the model select, showing the preset
THIS session runs — its own recorded one, not the deployment default, because a
resumed session runs what it was created with. `SessionSummary` carries
`agentPreset` for that, alongside `cwd` and `origin`.
The switch exists only while the conversation has not started. After the first
turn the seat becomes a plain label rather than a disabled menu: a greyed
control reads as "temporarily unavailable", when in fact the choice is gone for
good. The seat never asks in that state, and the host refuses independently
with `agent-preset-locked`, so a stale client cannot slip one past it.
A rejected switch restores the previous value and surfaces the host's message
rather than leaving the seat showing something the session is not running.
2026-08-07 00:38:11 +08:00
_Kerman
e4256a1684
feat(web): steer the whole queue with an empty-draft Cmd/Ctrl+Enter
2026-08-06 21:40:50 +08:00
imccyu
72f82f65c9
Merge remote-tracking branch 'origin/master' into mergebot/pr1389
...
# Conflicts:
# apps/web/tests/snapshots/sidebar-scrollbar/geometry.expected.md
# packages/client/ui-conversation/src/client/chat/MessageIconActions.tsx
# packages/client/ui-conversation/src/client/chat/message-chrome.ts
2026-08-04 16:33:55 +08:00
imccyu
e9d76dae64
fix(web): address UI polish review feedback
2026-08-04 16:25:09 +08:00
imccyu
b9f4e46462
Merge remote-tracking branch 'origin/master' into mergebot/pr1389
...
# Conflicts:
# packages/client/ui-workspace/src/client/WorkspaceBrowser.module.css
2026-08-04 16:06:38 +08:00
imccyu
3be257ba1d
fix(web): preserve polish accessibility contracts
2026-08-04 16:04:26 +08:00
imccyu
ad03ccbd7a
Merge branch 'master' into feat/turn-running-time
2026-08-04 16:03:31 +08:00
imccyu
cc435a9c0c
fix(web): use exact turn boundaries for run time
2026-08-04 15:55:07 +08:00
creatixchu
ef2fbdfc19
fix(web): preserve focus when restoring drafts
2026-08-04 15:12:11 +08:00
creatixchu
4e024da35a
Merge origin/master into worktree/composer-caret-binding
2026-08-04 14:44:09 +08:00
kingwl
4329b93989
Merge remote-tracking branch 'origin/master' into codex/fork-real-turn-tail
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageIconActions.tsx
2026-08-02 18:14:32 +08:00
imccyu
7d08e43720
fix(web): address steering review feedback
2026-08-02 17:53:07 +08:00
imccyu
dffe955ed2
feat(web): surface and configure composer steering
2026-08-02 17:53:07 +08:00
kingwl
76547dfe0c
fix(web): restrict message forks to completed turn tails
2026-08-02 16:25:02 +08:00
imccyu
42d34473af
fix(web): allow follow-ups to running subagents
2026-08-02 12:51:11 +08:00
Dudu-0223
16ffd63115
feat(web): add nested subagent conversations
2026-08-02 12:51:09 +08:00
creatixchu
7557fda62b
Merge latest master into PR 555
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md
# .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/client/ui-conversation/src/client/input/facade.ts
# packages/client/ui-conversation/src/client/input/hub.ts
# packages/client/ui-conversation/src/client/service.ts
# packages/client/ui-conversation/tests/apply-inject.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/input-matrix.spec.tsx
# packages/client/ui-conversation/tests/input-scenarios.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
2026-07-31 20:11:28 +08:00
07akioni
1766461947
Merge remote-tracking branch 'origin/master' into fix/remove-badge
2026-07-31 19:13:22 +08:00