Commit Graph
11797 Commits
Author SHA1 Message Date
Yichen Jiang 686e40ebf6 feat(ui-models): schema-driven provider configuration page
The Models settings section joins llm.providers (the configurable
directory with live state), settings.describe (schemas, layered redacted
values, secret slots), and credentials.describe (value-free badges) into
provider rows with one editor card at a time. The editor renders the
provider's profile subtree through dsh-client-schema-form; the
credential-ref role mounts a control that shows configured/source state
and stores keys write-only through credentials.set. Apply without
removals merges a minimal patch (stored secrets outside it survive);
apply after a reset — and row deletion — replace the user section so
removals land. The client runtime bridges the three new host frames to
typed ctx events (settings/credentials/models changed), the page
refetches on any of them once loaded, and ui-model's per-session picker
directories reload on models/changed so a settings-born route appears in
open pickers without a reopen.
2026-07-30 00:46:45 +08:00
Yichen Jiang b99d261501 Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
2026-07-30 00:32:42 +08:00
creatixchu abb3b62564 fix(host): review round 15 — lexical home normalization; webkit scrollbar hide; flex-none check; inert enumeration 2026-07-30 00:31:11 +08:00
Yichen Jiang 3733bd1374 fix(gui): remove temporary multimodal routing state 2026-07-30 00:30:58 +08:00
kingwl c97b1d025e Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
# Conflicts:
#	apps/web/tsconfig.json
#	docs/architecture.i18n.yaml
#	docs/event-producer-consumer.md
#	packages/client/runtime/README.i18n.yaml
#	packages/client/tsdown.client.ts
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/core/agent-loop/README.i18n.yaml
#	packages/core/agent/README.i18n.yaml
#	packages/core/agent/README.zh.md
#	packages/host/apiproxy/README.i18n.yaml
#	tsconfig.host.json
2026-07-30 00:30:38 +08:00
imccyu 41b0ba9ac5 fix: coverage 2026-07-30 00:25:51 +08:00
Tianyi Cui 758dc73ed9 docs: refresh generated config anchors 2026-07-30 00:24:59 +08:00
Yichen Jiang ee596568a3 Merge remote-tracking branch 'origin/master' into worktree/fix-multi-select-custom-answer
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
#	packages/ui/tool-ask-user/README.i18n.yaml
#	packages/ui/tool-ask-user/README.zh.md
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/user-interaction/README.i18n.yaml
#	packages/ui/user-interaction/README.zh.md
2026-07-30 00:24:24 +08:00
Yichen Jiang 9592c8f271 feat(schema-form): schema-driven React form renderer package
@deepseek-ai/dsh-client-schema-form rehydrates the wire's serialized
schemastery envelope (new Schema(json)) and edits a draft user section
against it: presence-in-draft marks a field overridden with a per-field
reset, inherited values render as placeholders, role('secret') slots are
write-only with configured-state placeholders from the wire's secrets
list, dict adds take a union-typed sKey as their vocabulary, and any
node the renderer cannot faithfully edit falls back to a read-only view
instead of silently disappearing. renderField(context) is the role hook
the Models page will use for the credential-ref control; validateDraft
runs the same rehydrated validator the host uses, so the browser and
host judge one schema.
2026-07-30 00:24:19 +08:00
Turtle 3685740179 test(cli): move skill policy snapshot fixture 2026-07-30 00:23:58 +08:00
Yichen Jiang a777000512 fix(user-interaction): preserve multi-select custom answers 2026-07-30 00:21:47 +08:00
Tianyi Cui 3d5fe9ffab Merge branch 'master' into fix/hook-matcher-validation 2026-07-30 00:21:43 +08:00
Tianyi Cui 91a104acef docs(pty): explain spawn-helper override precedence 2026-07-30 00:20:44 +08:00
Tianyi Cui 92052c1220 docs(persistent-bash): define cancellation reset 2026-07-30 00:18:55 +08:00
Yichen Jiang 3eec30c278 Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/web/tests/snapshots/live-interactions/retry.expected.md
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/src/client/index.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/chat/MessageItem.tsx
#	packages/client/ui-conversation/tests/chat-branch-tails.spec.tsx
#	packages/client/ui-trajectory/README.i18n.yaml
#	packages/client/ui-trajectory/README.md
#	packages/client/ui-trajectory/README.zh.md
#	packages/client/ui-trajectory/src/client/spans.ts
#	packages/client/ui-trajectory/tests/views.spec.tsx
#	packages/llm/llm-retry/README.i18n.yaml
#	packages/llm/llm-retry/README.zh.md
2026-07-30 00:16:32 +08:00
Tianyi Cui a3caf4b211 cleanup(persistent-bash): drop impossible marker branch 2026-07-30 00:16:26 +08:00
Tianyi Cui 9549c73f30 fix(persistent-bash): distinguish shell exit status 2026-07-30 00:15:39 +08:00
Tianyi Cui 0440c4cc0c Merge latest master into codex/migrate-to-oxlint 2026-07-30 00:13:30 +08:00
Yichen Jiang 191067559e feat(apiproxy): settings/credentials/llm wire domains, frames, and write guard
Eight compiler-locked methods: settings.describe/update/replace serve
redacted layered namespace views (secrets structurally absent from every
layer, write-only in the update direction) and fold seam refusals into
settings-rejected; credentials.describe/set/unset expose value-free views
with credential-rejected on shadowed writes; llm.providers merges the
configurable directory with live routes and llm.models claims the
host-scoped catalog reservation through the buildModelCatalog extraction
session.models now shares. Three HostFrame invalidations bridge the seam
events (host/settings-changed, host/credentials-changed,
host/models-changed), and the connection route generalizes the native-
dialog check into a privileged-method set covering all four writes. The
fixture and both fake clients grow the same face.
2026-07-30 00:13:12 +08:00
creatixchu 9a96aa2755 fix(host): review round 14 — shared hanging-lister fake; create-supersession and closing-commit contracts documented 2026-07-30 00:13:09 +08:00
imccyu ed1ae0d636 fix: docs budget 2026-07-30 00:12:03 +08:00
Tianyi Cui 9b9d3838ba docs(example): update persistent-tools snapshot command 2026-07-30 00:10:32 +08:00
07akioni a150cbc63b Merge branch 'master' into fix/ui-action-display 2026-07-30 00:10:25 +08:00
Turtle 7dfead7799 test(cli): keep file completion in source plane 2026-07-30 00:09:03 +08:00
07akioni b71fbe770d fix: ci 2026-07-30 00:08:59 +08:00
Tianyi Cui 93ae5ea867 fix(python): name unsupported release executables 2026-07-30 00:08:17 +08:00
Turtle 131470faa0 Revert "fix(tui): avoid blocking reference autocomplete"
This reverts commit f565ce44db708f1186354526a170513d48b07a2c.
2026-07-30 00:07:21 +08:00
Tianyi Cui 492eef806a Merge commit 'refs/codex/pr921/master' into worktree/retarget-pr921-20260729
# Conflicts:
#	apps/web/tests/slash-flow.snapshot.ts
2026-07-30 00:06:50 +08:00
Tianyi Cui 60c8f5ea69 Merge remote-tracking branch 'origin/pr-555-head' into worktree/pr555-simplify
# Conflicts:
#	apps/web/tests/image-display.snapshot.ts
2026-07-30 00:06:12 +08:00
Tianyi Cui 514238ee47 fix(editor): preserve tabs in file views 2026-07-30 00:05:58 +08:00
kingwl f893e2281d feat(agent): add addressable queue operations 2026-07-30 00:05:00 +08:00
imccyu dcb8b592ee Merge remote-tracking branch 'origin/master' into worktree-trpc 2026-07-30 00:04:52 +08:00
07akioni 4e7f90667a fix: chat agent message actions display 2026-07-30 00:01:49 +08:00
Turtle c00a54d334 Merge remote-tracking branch 'origin/master' into feature/shared-cli-config-foundation
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
2026-07-30 00:01:13 +08:00
Turtle 2adb9a5416 fix(tui): avoid blocking reference autocomplete 2026-07-29 23:59:52 +08:00
Tianyi Cui bd8315cb1b Merge pull request #922 from deepseek-harness/worktree/pr885-bot-thread-fixes
fix: harden Oxlint migration contracts
2026-07-29 23:58:57 +08:00
Tianyi Cui a58bc6f1e9 Merge pull request #823 from deepseek-harness/worktree/skill-invocation-controls
feat(skill): add model and user invocation controls
2026-07-29 23:58:19 +08:00
Tianyi Cui 38e4a7bf7f test(snapshot): pin persistent tool schemas 2026-07-29 23:56:28 +08:00
creatixchu 413321e261 fix(host): review round 13 — probe never gates a landing; relist supersession covered, false ignores removed 2026-07-29 23:56:21 +08:00
imccyu b5ec489c9f refactor(typert): share type node traversal 2026-07-29 23:55:13 +08:00
imccyu 49fbfc2249 git: add .typert ignore 2026-07-29 23:55:13 +08:00
imccyu c269febc9a refactor(cordis): generate catalogs from Typert models 2026-07-29 23:55:12 +08:00
Tianyi Cui d8b70df00c test(snapshot): isolate persistent tool artifacts 2026-07-29 23:53:59 +08:00
imccyu 4d1ab81f05 test(web): shrink the assembled jsdom lane to one built-bundle boot smoke
The seven behavior-pinning snapshots (workspace-flow, slash-flow,
todo-display, session-title, session-actions, terminal-card,
code-mode-fixture) asserted per-package behavior through the whole
built app: every assertion now lives in the owning package's suite at
equal strength (SlotTestRuntime benches assemble the same plugin apply
over the production slot machinery), while the assembled layer kept
re-failing on unrelated churn at 10s-timeout debugging cost.

What only this lane can prove is the artifact plane: lib/client.js
bundles loading through the ModuleLoader path, staged boot activation
across the inject layers, per-plugin CSS injection, and a journey
reaching chat content over the fixture transport. built-boot.snapshot.ts
pins exactly that, and nothing else — behavior assertions belong to the
package suites.
2026-07-29 23:51:21 +08:00
imccyu 3980de695e test(client): pin assembled-app journeys at package level on SlotTestRuntime
Sink the behavior previously held only by the apps/web jsdom snapshots
into the owning packages, each bench mounting the real apply on the
production slot machinery with fixture-fed data:

- ui-conversation/assembly-surfaces: the todo_write turn reaches both
  product surfaces (keyed toolview row + dock plan strip via the todos
  projection) and the strip follows projection retirement; the keyed
  bash row carries its resident terminal card while the fallback row
  reaches one through expand; the locked no-session view state; the
  composer textarea surviving the blank→active conversion as the same
  DOM node; the promptError alert strip with the machine-restored
  draft; one summary update re-labeling the breadcrumb.
- ui-workspace/rename-assembly: the session-rename chain (row menu →
  dialog → the injected renameSession hop → ISession.rename with the
  edge-trimmed draft → dialog close and row re-label from the list),
  plus the rejected arm keeping the dialog open with the error.
- runtime/workspaces-service: startInitialSelection — connects the
  recent Workspace once both baselines are ready and opens the session,
  stays idle with a current session or no recent target (double start
  fails loud), and a failed connect returns to waiting and retries on
  the next list change.

Component-level arms stay in the existing package suites; these files
prove only the assembled wiring.
2026-07-29 23:51:21 +08:00
Tianyi Cui 84394e596d cleanup(editor): remove dead path-base plumbing 2026-07-29 23:50:52 +08:00
Tianyi Cui 7f5aa2d053 fix(persistent-bash): wait for complete status markers 2026-07-29 23:50:12 +08:00
imccyu 989b80791f feat(test-runtime): add TestSessions.updateSummary
The wire-echo stand-in for list-row settlement (title from the rename
unary response, running flips): benches mirror what the production
manager writes into the list store, so row re-label assertions need no
assembled app. Fixture ISession stubs must NOT call it re-entrantly —
they run inside a React event dispatch already wrapped in act, and a
nested act corrupts the global act queue (the next test renders an empty
tree); tests echo from their own top level instead.
2026-07-29 23:49:27 +08:00
Tianyi Cui fbfe520471 fix(editor): preserve literal replacement text 2026-07-29 23:48:43 +08:00
Tianyi Cui 4146e403ea test(web): refresh skill menu snapshot after retarget 2026-07-29 23:47:50 +08:00