creatixchu
38c21c1428
Merge latest master into PR 555
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
2026-07-31 19:55:58 +08:00
creatixchu
09b7fcfd4f
Merge latest master into PR 555
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/core-data-structures/core.i18n.yaml
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
2026-07-31 19:39:22 +08:00
Tianyi Cui
d64b032311
Merge pull request #1082 from deepseek-harness/worktree/fix-web-duplicate-folder-names-20260731
...
fix(workspace): allow same-basename folders in Web
2026-07-31 19:37:38 +08:00
Tianyi Cui
678ad97f9a
Allow same-basename Workspace paths
2026-07-31 18:37:34 +08:00
creatixchu
3c3ef85c9c
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# 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/chat/MessageItem.tsx
2026-07-31 18:18:07 +08:00
Tianyi Cui
20cb7e7360
Merge latest master into manual compaction
2026-07-31 17:58:30 +08:00
creatixchu
8b00482d7c
fix(web): harden multimodal draft and storage lifecycle
2026-07-31 17:15:08 +08:00
creatixchu
dab7670207
Merge remote-tracking branch 'origin/master' into worktree/unify-workspace-add
2026-07-31 16:29:11 +08:00
creatixchu
6184ba35ca
fix(web): address the review round on the one-route add flow
...
- lifecycle-chrome's second scaffold staged its workspace under the OUTER
scaffold's temp root, coupling two supposedly independent worlds and
leaving the aria scrub root wrong; it now uses its own workspaceCwd.
- The direct-open path now carries the same `flowBusy` gate that disables
the equivalent menu entry, so an occupant re-registering mid-adoption
cannot raise a second flow.
- A composition with no directory-picker no longer opens a zero-entry
popover on the hero anchor: with nothing to pick and nothing to add,
the gesture shows nothing. Both behaviors gain a unit test.
- Brought three partially superseded Agent Notes current (the native
picker, the workspace UI product flow, and the sidebar browsing split),
cross-linked to this decision, both languages re-recorded.
- Corrected this Note's own Testing section: the shared e2e helper stages
and adopts its directory, it does not create one in-dialog — only
workspace-management does. Named the client-seam and CLI-README residue
in the follow-up TODO alongside the wire branch.
2026-07-31 16:23:49 +08:00
creatixchu
d6231007af
cleanup(web): give adding a Workspace one route
...
Both Workspace surfaces offered "Open local folder…" and "Create a new
workspace" for one outcome. The browse occupant already carries its own
New folder affordance, so picking a directory covered creating one; the
name dialog only added a second vocabulary and a create target the
operator could neither see nor choose.
The surviving entry is named after the outcome — "Add workspace…" — and a
menu now appears only where there is something to choose between: with no
Workspace listed (the add-only sidebar header, or an empty hero list) the
anchor gesture raises the directory flow directly instead of a one-row
popover. An empty list counts as final only after the list baseline lands,
and a composition with no directory-flow occupant hides the sidebar button
rather than offering a dead one.
WorkspaceCreateFlow becomes WorkspacePickFlow (createOnly -> addOnly) and
the injected createWorkspace narrows to { path }. The host's
workspace.create({ name }) branch and `dsh web --workspace-root` lost their
last product consumer; both are marked at the call site for a follow-up.
2026-07-31 15:47:40 +08:00
Hypatia May
1114a80a45
Merge branch 'fix/web-transcript-projection' into feat/manual-compact-single-lock
...
# Conflicts:
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
2026-07-31 15:36:49 +08:00
creatixchu
47b3f082ba
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
2026-07-31 15:04:58 +08:00
creatixchu
1a9039cdb4
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
2026-07-31 14:51:31 +08:00
imccyu
4c01550833
Merge remote-tracking branch 'origin/master' into mergebot/pr1016
2026-07-31 14:43:03 +08:00
Tianyi Cui
e371311203
Merge latest Web transcript parent into manual compaction
...
# Conflicts:
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/client/runtime/README.i18n.yaml
2026-07-31 14:39:20 +08:00
Tianyi Cui
6a31f5bf2a
Merge finalized Web transcript parent
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-30-session-end-seed-log-boundary.i18n.yaml
2026-07-31 14:11:40 +08:00
imccyu
53ceab53b8
feat(apiproxy): workspace.archiveSession RPC and archived-sessions frame
...
workspace.archiveSession answers the full updated archive set;
workspace.list carries the set as the reconnect baseline; the host
stream pushes host/archived-sessions-changed full snapshots from the
domain/changed global-put branch (same posture as workspace-changed).
Unknown sessions map to the existing session-not-found code.
2026-07-31 14:08:11 +08:00
creatixchu
1f0b5b1ebf
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# apps/web/tests/built-boot.snapshot.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/chat/MessageItem.tsx
# packages/host/apiproxy/README.i18n.yaml
2026-07-31 13:43:10 +08:00
Tianyi Cui
98f48fd83a
Merge finalized Web transcript parent
...
# Conflicts:
# apps/cli/README.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-trajectory/README.i18n.yaml
# packages/client/ui-trajectory/README.zh.md
2026-07-31 13:42:47 +08:00
NI0317
cf4027afe8
Merge remote-tracking branch 'origin/master' into feature/gui-first-run-welcome
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
2026-07-31 13:41:17 +08:00
Yichen Jiang
cb60e1759a
Merge remote-tracking branch 'origin/master' into worktree/permission-default-settings
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
2026-07-31 13:27:43 +08:00
NI0317
85d1c5e2ad
Merge remote-tracking branch 'origin/master' into feature/gui-first-run-welcome
...
# Conflicts:
# packages/client/ui-settings-general/src/client/index.ts
# packages/client/ui-settings-general/src/client/locales.ts
# packages/client/ui-settings-general/tests/apply.spec.ts
# packages/client/ui-settings/README.i18n.yaml
# packages/client/ui-settings/README.md
# packages/client/ui-settings/README.zh.md
# packages/client/ui-settings/src/client/index.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
2026-07-31 12:48:39 +08:00
Yichen Jiang
ee74b5b07a
feat(permission): add new-session default setting
2026-07-31 12:48:19 +08:00
Hypatia May
322950487e
fix(apiproxy): let commands outlive unary deadline
2026-07-31 11:51:49 +08:00
creatixchu
ddc008f448
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/client/connection/README.i18n.yaml
# packages/client/connection/src/client/api.ts
# packages/client/connection/src/client/fixture.ts
# packages/client/connection/src/client/index.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/sessions/service.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/stores.ts
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/src/api/sessions.ts
2026-07-31 10:46:45 +08:00
Hypatia May
01e64c6350
Merge finalized Web transcript parent
2026-07-31 09:46:32 +08:00
creatixchu
a975eda638
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/cordis-catalog/events.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/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/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/chat/AssistantMarkdown.tsx
# packages/client/ui-conversation/src/client/chat/ChatView.tsx
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/llm/llm-deepseek/tests/adapter.spec.ts
# packages/llm/llm-pi-ai/README.i18n.yaml
# packages/llm/llm-pi-ai/src/index.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.md
# packages/llm/llm/README.zh.md
# packages/llm/llm/src/index.ts
# packages/llm/llm/src/types.ts
2026-07-31 02:14:07 +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
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
Hypatia May
f3963686bd
Merge final Web parent into manual compact
2026-07-31 00:38:21 +08:00
NI0317
bc69648f03
Merge updated DeepSeek onboarding base
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
2026-07-31 00:32:40 +08:00
creatixchu
c03753fe48
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/client/runtime/README.i18n.yaml
# packages/client/ui-conversation/README.i18n.yaml
# 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.tsx
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api/sessions.ts
2026-07-31 00:09:49 +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
7c086e40be
Merge branch 'master' into worktree/plan-review-layout
2026-07-30 23:48:19 +08:00
Yichen Jiang
8c0d626cd5
Merge worktree-llm-dynamic-config (884, with latest master) into worktree-llm-web-config
...
# Conflicts:
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# packages/client/runtime/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
2026-07-30 23:32:31 +08:00
NI0317
c311400945
Merge updated DeepSeek onboarding base
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
2026-07-30 22:19:31 +08:00
NI0317
bef8db3add
feat(web): add versioned first-run welcome
2026-07-30 22:17:56 +08:00
creatixchu
1102cfc1f3
Merge remote-tracking branch 'origin/master' into worktree/plan-review-layout
2026-07-30 22:10:56 +08:00
Yichen Jiang
a5e0c5e7e7
Merge latest master into worktree-llm-web-config
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
2026-07-30 21:45:55 +08:00
imccyu
7d27c92851
test(web): cover row fork in the real app
2026-07-30 21:28:16 +08:00
imccyu
36f1489398
fix(web): address session fork review findings
2026-07-30 21:28:13 +08:00
imccyu
57fb5b488e
feat: fork
2026-07-30 21:27:14 +08:00
Yichen Jiang
b6004aca52
test(settings,apiproxy): cover the path-write and revision paths the wire reaches
...
The mutate seam's root-path ops, its non-array rejection, and the recursion
into an existing nested object were unexercised, as was the whole containment
side of the settings/document-updated fan-out and the before-snapshot repair
of a section a hand edit left non-object. The settings.mutate route had no
round trip at all: neither the client method nor the handler entry ran.
2026-07-30 21:25:16 +08:00
creatixchu
26ad19ed17
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/src/api-proxy.ts
# packages/ui/tui/README.i18n.yaml
2026-07-30 21:22:31 +08:00
Yichen Jiang
3957ce007a
Merge branch 'worktree-llm-dynamic-config' into worktree-llm-web-config
...
# Conflicts:
# apps/cli/cordis.yml
# apps/cli/package.json
# apps/cli/tests/tui-keyless-smoke.e2e.ts
# apps/web/tests/details-session-lifecycle.e2e.ts
# apps/web/tests/snapshots/code-mode-round/ui.expected.md
# apps/web/tests/snapshots/cordis-tool-round/ui.expected.md
# apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
# apps/web/tests/snapshots/lifecycle-chrome/hero.expected.md
# apps/web/tests/snapshots/lifecycle-chrome/reloaded.expected.md
# apps/web/tests/snapshots/live-interactions/cancel.expected.md
# apps/web/tests/snapshots/live-interactions/error-auth.expected.md
# apps/web/tests/snapshots/live-interactions/retry.expected.md
# apps/web/tests/snapshots/message-actions/ui.expected.md
# apps/web/tests/snapshots/question-composer/answered.expected.md
# apps/web/tests/snapshots/seeded-history/ui.expected.md
# apps/web/tests/snapshots/steering/mid-steer.expected.md
# apps/web/tests/snapshots/steering/settled.expected.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
# docs/user/guide/config.i18n.yaml
# docs/user/guide/config.md
# docs/user/guide/config.zh.md
# docs/user/guide/index.i18n.yaml
# docs/user/guide/index.md
# docs/user/guide/index.zh.md
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# examples/cordis-agent/cordis.yml
# examples/cordis-agent/tests/cordis-tools.e2e.ts
# examples/headless-agent/tests/semantic-checkpoint-snapshots/tool-outcome-unknown/session.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/parent.expected.jsonl
# examples/tui-agent/code-mode.cordis.yml
# examples/tui-agent/cordis.yml
# packages/examples/tui-demo/README.md
# packages/examples/tui-demo/README.zh.md
# packages/host/apiproxy/README.i18n.yaml
# packages/pty/tool-bash-persistent/README.i18n.yaml
# packages/ui/tui/tests/snapshots/status-diagnostics-narrow.expected.txt
# packages/ui/tui/tests/snapshots/status-diagnostics.expected.txt
# pnpm-lock.yaml
# scripts/snapshots/python-sdk-single-exe/advanced/result.json
# scripts/snapshots/python-sdk-single-exe/advanced/session.1.jsonl
# scripts/snapshots/python-sdk-single-exe/advanced/session.2.jsonl
# scripts/snapshots/python-sdk-single-exe/advanced/session.jsonl
2026-07-30 20:15:40 +08:00
Hypatia May
eb3188f05d
Merge remote-tracking branch 'origin/fix/web-transcript-projection' into feat/manual-compact-single-lock
...
# Conflicts:
# apps/cli/config/base.cordis.yml
# apps/cli/cordis.yml
# docs/event-producer-consumer.md
# examples/package.json
# examples/tui-agent/README.i18n.yaml
# examples/tui-agent/README.md
# examples/tui-agent/README.zh.md
# pnpm-lock.yaml
2026-07-30 20:09:23 +08:00
creatixchu
98ed9d8d4b
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# apps/cli/cordis.yml
# apps/cli/package.json
# apps/cli/src/bin.ts
# apps/cli/tests/args.spec.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/host/apiproxy/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
# pnpm-lock.yaml
2026-07-30 20:04:22 +08:00
Hypatia May
fe97451604
Merge remote-tracking branch 'origin/master' into fix/human-transcript-projection
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-17-dedicated-full-screen-tui-front-door.i18n.yaml
# docs/cordis-catalog/services.md
# packages/host/apiproxy/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
2026-07-30 19:57:49 +08:00
creatixchu
bbff667000
test(apiproxy): drop the dead hostDescription fake override
...
363db89ba removed the client-side modality gate and the tests that fed
host.describe a scripted activeModel, but left the fakeApi override
field, its ResponseValue import, and the ?? fallback behind. Nothing
passes hostDescription, so the left arm was unreachable.
2026-07-30 19:49:33 +08:00
Yichen Jiang
e6483f0afc
feat(settings): detect stale writers with a revision, and announce raw changes
...
The remaining P1 from the #939 review, plus the P2 it shares a mechanism with.
Nothing carried a version, so two tabs editing one namespace silently
overwrote each other — reproduced as tab B's `reasoning` lost to tab A's
older draft. The seam's per-namespace write queue orders writes; it cannot
tell a fresh writer from one replaying a snapshot a predecessor superseded.
Each namespace now carries a monotonic `revision` over its RAW section. A
write may send `expectedRevision`, checked at the FRONT of the queue (not at
call time, which would race the very predecessor it guards against); a
mismatch rejects with `SettingsConflictError` → `settings-conflict` on the
wire, carrying both revisions. The editor captures the revision it opened at
and, on conflict, asks the user to reopen rather than replaying its snapshot.
The same counter fixes the missing broadcast. `settings/updated` is gated on
the resolved value — correct for consumers, wrong for configuration surfaces:
storing an override equal to the composition base leaves the resolved value
alone while changing what the document says (the field is now overridden, not
inherited) and moving every open editor's revision. `settings/document-updated
(ns, revision)` fires on any raw-section change, in-process or external, and
`host/settings-changed` now rides it.
That event also closes the stale model picker: editing a provider's `models`
changes no route, so `llm/adapters-updated` never fired and an open picker
kept serving the old catalog. A change to an exposed provider namespace now
emits `host/models-changed` too — that namespace holds the catalog.
Docs: both sides of the five touched README pairs, a type-equiv block for
`SettingsPathOp`, and an Agent Note recording what the plane exposes and who
may overwrite what. The deferred wire-redaction gaps (secrets behind
union/intersection/transform, `.default(...)` in the served envelope, schema
text in rejection messages, `new Function` rehydration, pi-ai's `headers`) are
recorded as TODO(settings-wire-redaction) and in Known Limitations rather than
half-fixed.
2026-07-30 19:24:21 +08:00