NI0317
34aed0ab09
fix(web): keep surface prompt module-private
2026-07-28 17:31:48 +08:00
NI0317
568866d5a8
fix(web): orient agents to the running GUI
2026-07-28 17:20:20 +08:00
creatixchu
0fcfc5214b
Merge remote-tracking branch 'origin/doc/host-client-group-readmes' into feat/directory-picker
2026-07-28 16:42:36 +08:00
creatixchu
7fd2abd828
feat(host): directory-picker capability seam with dialog and browse backends
...
The web GUI's folder picking was hardwired to one interaction: a native
OS chooser compiled into the gateway, unusable for remote deployments
and swappable only by editing apiproxy source.
Directory picking becomes a three-package capability seam in
packages/host: ctx.directoryPicker returns a discriminated capability —
dialog (the extracted native chooser; host-display only) or browse
(new: one-level listing + child creation over Node stdlib, hidden flags
host-stamped, symlinks followed, ancestry crumbs; remote-capable). The
gateway injects the seam, advertises the kind via
host.describe.directoryPicker, serves host.listDirectory /
host.createDirectory under browse, and answers
directory-picker-unavailable across kinds. cordis.yml is the swap
point; apps/cli keeps dialog mounted, so behavior is unchanged until
the in-app browser PR flips the default. The connection fixture serves
a deterministic browse tree; WorkspacesService gains the browse calls
the browser UI will drive. Decision record:
.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md
2026-07-28 15:44:53 +08:00
creatixchu
01eea07bab
fix(connection): keep LAN serving working under the /api browser-trust fence
...
Markerless requests pass on any Host (a non-browser sender is the principal
and forges headers anyway); browser Host matching gains port-less entries and
WHATWG normalization; dsh derives LAN IP-literal authorities for an
all-interfaces bind and web grows --trusted-host for named ones.
2026-07-28 15:40:02 +08:00
_Kerman
fbf87e660c
refactor: identify and freeze messages at creation
2026-07-28 13:55:59 +08:00
Yichen Jiang
004f598917
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/config-catalog.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/README.i18n.yaml
# packages/client/connection/src/client/fixture.ts
# packages/client/connection/src/index.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/README.md
# packages/client/runtime/README.zh.md
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/ui-conversation/README.i18n.yaml
# packages/client/ui-conversation/src/client/apply.ts
# 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-trajectory/tests/views.spec.tsx
# packages/compact/compact-basic/README.i18n.yaml
# packages/cordis/tool-cordis/src/api-catalog.ts
# 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/fetch-carrier.spec.ts
# packages/llm/llm-deepseek/src/adapter.ts
# packages/llm/llm-deepseek/tests/adapter.spec.ts
# packages/llm/llm-deepseek/tests/serialize.spec.ts
# packages/llm/llm-pi-ai/README.i18n.yaml
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm-pi-ai/src/index.ts
# packages/llm/llm-pi-ai/tests/adapter.spec.ts
# packages/llm/llm/src/types.ts
# packages/ui/tui/README.i18n.yaml
# packages/ui/tui/src/index.ts
# packages/ui/tui/tests/tui.spec.ts
2026-07-28 11:41:40 +08:00
Yichen Jiang
1dede11506
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md
# apps/web/tests/session-title.snapshot.ts
# docs/config-catalog.md
# 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/ChatView.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/llm/llm-retry/README.i18n.yaml
# packages/llm/llm-retry/README.md
# packages/llm/llm-retry/README.zh.md
2026-07-28 11:39:42 +08:00
imccyu
a3bdec4450
Merge remote-tracking branch 'origin/master' into worktree-guifork
2026-07-28 10:23:48 +08:00
Hypatia May
05d4c19085
Merge remote-tracking branch 'origin/master' into codex/basic-session-search
...
# Conflicts:
# apps/web/tests/snapshots/question-composer/answered.expected.md
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/tests/fake-api.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/tests/apply.spec.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/index.ts
# packages/host/apiproxy/src/api/sessions.schema.ts
# packages/host/apiproxy/src/fetch/client.ts
# packages/host/apiproxy/src/fetch/handler.ts
# packages/host/apiproxy/tests/fetch-carrier.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
# packages/session-query/session-query/tests/search-helpers.spec.ts
2026-07-28 09:27:28 +08:00
imccyu
af70af4020
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
2026-07-28 00:39:24 +08:00
imccyu
2b2840a6e1
fix: mount the session-projection registry in the shipped web composition
2026-07-27 23:38:31 +08:00
Tianyi Cui
f843d2b238
Merge origin/master into feat/tui-master-port
2026-07-27 23:34:56 +08:00
imccyu
6d8e5fb3a2
Merge branch 'master' into worktree/web-session-model-selector
2026-07-27 19:36:19 +08:00
Tianyi Cui
dd03c88083
Merge commit 'refs/codex-unblock/20260727/pr660-master' into worktree/pr660-merge-20260727
...
# Conflicts:
# scripts/doc-budgets.manifest.json
2026-07-27 19:34:55 +08:00
Turtle
2fda7c1da5
feat(cli): default session store to global ~/.dsh/sessions
2026-07-27 19:08:26 +08:00
Turtle
4c5f92e0fd
feat(tui): personal TUI rework, integrating upstream model reasoning-effort selection
...
Consolidates the personal dsh-tui customizations (module split into
components/session/extension, prompt template + running-glyph indicator,
copyable transcript, tool-card headers, timing placement, XML tool output,
status/footer rework) and ports upstream's model reasoning-effort selector
(Shift+Tab effort cycling, effort-aware /model, footer, and /status) onto
the personal module layout.
2026-07-27 18:55:13 +08:00
Hypatia May
01a12ecc98
Merge remote-tracking branch 'origin/master' into codex/basic-session-search
2026-07-27 18:38:18 +08:00
Tianyi Cui
d897dcc7ea
Merge remote-tracking branch 'origin/master' into worktree/pr682-retarget-20260727
...
# Conflicts:
# .agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
2026-07-27 17:55:56 +08:00
Hypatia May
a2d108838e
fix(cli): install shutdown handlers before readiness
2026-07-27 15:49:43 +08:00
Hypatia May
76e185dcb6
test(cli): isolate lazy search startup smoke (round 10)
2026-07-27 14:54:27 +08:00
Hypatia May
0aa7f8c5cf
fix(web): converge session search boundaries (round 9)
2026-07-27 14:46:08 +08:00
Hypatia May
ba2925c704
fix(web): converge search runtime boundaries (round 8)
2026-07-27 14:02:35 +08:00
imccyu
3b04941830
Merge the concurrent selector adaptation; ui-model stays the model owner
...
The remote side re-merged master (i18n workflow round) and restored the
pre-architecture ModelSelector package with the Session-side state
machine. Reconciliation keeps that merge's master content and reasserts
this branch's model architecture: business state lives in ui-model's
shared per-session directory (ctx.models), not on Session/
ConversationSnapshot; the input.model seat entry and the /model popup
stay the two same-source entries; the history modelTarget piggyback stays
removed. The ui-model-selector package, its roster row, and its allowlist
entry go; the smoke-real roster names ui-model.
2026-07-27 13:36:25 +08:00
Hypatia May
bd42204e53
fix(cli): keep search index ephemeral
2026-07-27 12:51:47 +08:00
Hypatia May
31215687f9
fix(web): honor search ownership and cancellation
2026-07-27 12:42:46 +08:00
Yichen Jiang
b599d1d0af
Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
...
# Conflicts:
# .gitignore
# apps/cli/package.json
# apps/cli/src/web.ts
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/module-graph.md
# packages/client/connection/README.md
# packages/client/connection/src/client/api.ts
# packages/client/connection/src/client/fixture.ts
# packages/client/runtime/README.md
# packages/client/runtime/src/client/sessions/service.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/src/client/workspaces/service.ts
# packages/client/ui-conversation/src/client/apply.ts
# 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/service.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/EmptyHero.tsx
# packages/client/ui-conversation/src/client/skeleton/EmptyState.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.module.css
# 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/skeleton.spec.tsx
# packages/client/ui-trajectory/tests/views.spec.tsx
# packages/host/apiproxy/src/api-proxy.ts
# pnpm-lock.yaml
2026-07-27 12:27:30 +08:00
Yichen Jiang
bde5e26a96
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# apps/cli/package.json
# apps/web/tests/smoke-real.e2e.ts
# apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
# apps/web/tests/snapshots/seeded-history/ui.expected.md
# docs/config-catalog.md
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/chat-stats-bash-sample.spec.tsx
# packages/client/ui-conversation/tests/chat-toolview-slot.spec.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/client/ui-conversation/tests/gate-branch-tails.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/host/apiproxy/README.md
# packages/host/apiproxy/src/api-proxy.ts
# pnpm-lock.yaml
# scripts/verify-package-readme-model-experience.ts
# tsconfig.base.json
2026-07-27 12:17:38 +08:00
Hypatia May
891e9035e7
feat(web): add basic past-session search (round 1)
2026-07-27 12:15:06 +08:00
Yichen Jiang
cd5c1f88a1
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
...
# Conflicts:
# apps/web/tests/smoke-real.e2e.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/session.ts
# 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
2026-07-27 12:14:23 +08:00
Tianyi Cui
38a05724f4
Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
...
# Conflicts:
# apps/cli/package.json
2026-07-27 11:36:03 +08:00
imccyu
c132cbdb6a
Adapt session model selection to the slash/input/session architecture
...
- host trio kept on the merged api-proxy: session.models (provider-grouped
advisory directory), session.selectModel (validated provider, advisory
model), installAgentLlmTarget threaded through create/resume/ensureSession;
the gateway declares the llm inject it reads
- history no longer piggybacks modelTarget: the current target travels on
session.models alone (the /model popup is the sole consumer)
- new @deepseek-ai/dsh-client-ui-model plugin: /model popupSelect over the
wire — options load the directory (group label in the detail column,
provider-local failures listed inline), onSelect routes selectModel;
failures ride the popup shell's error/retry surface
- ModelSelector package, conversation.composer.control slot, and the
Session-side modelSelection state machine are removed: model selection
belongs to the /model popup; the named conversation.input.model seat
stays empty until a control-seat entry is designed for it
2026-07-27 10:28:45 +08:00
Tianyi Cui
cbb266dc2d
Merge remote-tracking branch 'origin/master' into nih-imp-execa
...
# Conflicts:
# .agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
# apps/web/tests/scaffold.ts
# packages/session-persistence/session-checkpoint-policy/tests/crash-recovery.e2e.ts
# packages/support/acp-snapshot/README.i18n.yaml
2026-07-27 06:31:17 +08:00
imccyu
a27be43ac1
feat: slash system / input service / agent scope
2026-07-27 03:28:39 +08:00
Tianyi Cui
ea58a5660b
Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
2026-07-27 00:22:15 +08:00
Tianyi Cui
d167af3fb7
Merge branch 'master' into worktree-tasks-service-seam
2026-07-26 22:57:38 +08:00
Tianyi Cui
c4647a8609
test: adopt execa for hand-rolled subprocess plumbing, parseArgs for llm-mock-server CLI, vi.waitFor for poll loops
...
Implements the execa Agent Note's four sub-changes:
- execa (root devDep + loader-smoke dep) replaces the hand-rolled
spawn-collect-timeout choreography in loader-smoke, apps/cli and
cli-demo/acp-demo built-bin e2e, lsp-local and code-runtime-worker
built-lib e2e, the tui pty-harness outer collector, the jsonrpc
keyless smoke, and crash-recovery's child spawn. Genuinely custom
parts stay custom: cli-demo's interrupt-on-marker, jsonrpc's
line-predicate protocol driving, crash-recovery's SIGKILL-at-failpoint.
The two loader-smoke /* v8 ignore */ OS-error branches are gone.
- llm-mock-server CLI tokenizes via node:util parseArgs; numeric
coercion/bounds/cross-option constraints stay manual; pinned
error-message tests updated to the parseArgs texts.
- both loadRootEnv copies in apps/web/tests are deleted: the owning
vitest configs (web unconditionally, snapshot in record mode)
already load the repo-root .env before these files run.
- the four poll loops (acp-snapshot harness waits + crash-recovery
waitForFile) ride vi.waitFor with explicit {interval, timeout}.
2026-07-26 22:29:41 +08:00
Tianyi Cui
1dfb38a0b2
Merge remote-tracking branch 'origin/master' into web-e2e-interactions
2026-07-26 20:59:25 +08:00
Tianyi Cui
202582d600
Merge branch 'worktree-tasks-service-seam' into worktree-process-service-seam
...
# Conflicts:
# packages/bash/bash-local/README.md
# scripts/doc-budgets.manifest.json
# scripts/type-equiv.manifest.json
2026-07-26 20:55:58 +08:00
Tianyi Cui
fdef6b644a
docs: sync Code Mode README translations
2026-07-26 20:31:37 +08:00
Tianyi Cui
c3394d3012
Merge remote-tracking branch 'origin/master' into worktree-tasks-service-seam
...
# Conflicts:
# packages/tasks/README.md
# packages/tasks/tasks/README.md
# scripts/translation-pairing.manifest.json
2026-07-26 20:28:37 +08:00
Tianyi Cui
a0672e8ab3
Merge branch 'master' into code-mode-ui/host-foundation
2026-07-26 20:07:43 +08:00
Tianyi Cui
43ff7795ec
Merge remote-tracking branch 'origin/master' into web-e2e-interactions
2026-07-26 15:39:57 +08:00
Tianyi Cui
e5e7c0347e
docs(cli): document the DSH_TOOLS_MODE contract in the owning README
...
Responding to ds-review-bot round 2 on #648 : the env seam's accepted
values, native default, process-wide scope, loud-failure behavior, and
temporary status now live in apps/cli/README.md next to the Web/headless
surface it configures, not only in the cordis.yml comment.
2026-07-26 14:47:41 +08:00
Tianyi Cui
df8756ccf5
Merge remote-tracking branch 'origin/master' into worktree/i18n-complete-non-readme
...
# Conflicts:
# packages/client/i18n/README.md
# packages/client/locale/README.i18n.yaml
# packages/client/locale/README.zh.md
# packages/client/ui-layout/README.md
# packages/client/ui-theme/README.md
2026-07-26 14:37:46 +08:00
Tianyi Cui
f936fea4a1
Merge remote-tracking branch 'origin/master' into web-e2e-interactions
2026-07-26 14:19:06 +08:00
Yichen Jiang
8c77ba6420
Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
2026-07-26 14:09:43 +08:00
Yichen Jiang
a430207427
feat(web): retry transient model requests
2026-07-26 14:09:31 +08:00
imccyu
0fe9ff888d
Merge origin/master into worktree-websettings
...
ui-sidebar shell landed on master (#643 : geometry-only shell, the
browsing region moved to the sidebar.workspaces slot); this branch's
sidebar.settings foot seat re-applies on top — the hardcoded foot row
becomes the seat, the seat rides the railIn crossfade, and the shell
spec's renderSlot stub key-splits region vs settings.
2026-07-26 13:15:57 +08:00
Yichen Jiang
cba0948604
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-23-client-plugin-loading-model.i18n.yaml
# apps/cli/src/web.ts
# apps/web/tests/session-title.snapshot.ts
# apps/web/tests/smoke-fixture.e2e.ts
# packages/client/connection/src/client/api.ts
# packages/client/connection/src/client/fixture.ts
# packages/client/connection/src/client/index.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.module.css
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/chat-stats-bash-sample.spec.tsx
# packages/client/ui-conversation/tests/chat-toolview-slot.spec.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/client/ui-conversation/tests/gate-branch-tails.spec.tsx
# packages/client/ui-conversation/tests/skeleton-branches.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/host/apiproxy/README.md
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/rpc.schema.ts
# packages/host/apiproxy/src/api/rpc.ts
# packages/host/apiproxy/tests/api-proxy-models.spec.ts
# packages/host/apiproxy/tests/rpc-schemas.spec.ts
# packages/host/runtime/README.md
# packages/llm/llm-deepseek/README.md
# scripts/translation-pairing.manifest.json
# tsconfig.client.json
2026-07-26 13:13:53 +08:00