imccyu
59a2fc408b
Merge remote-tracking branch 'origin/worktree-webslot2' into worktree/fix-collapsed-sidebar-rail
...
# Conflicts:
# apps/web/tests/smoke-fixture.e2e.ts
# packages/client/ui-layout/src/client/AppFrame.tsx
# packages/client/ui-layout/src/client/columns.ts
# packages/client/ui-layout/src/client/index.ts
# packages/client/ui-layout/tests/app-frame.spec.tsx
# packages/client/ui-layout/tests/columns.spec.ts
# packages/client/ui-sidebar/README.md
# packages/client/ui-sidebar/src/client/SidebarRoot.tsx
# packages/client/ui-sidebar/src/client/contract/slots.ts
# packages/client/ui-sidebar/src/client/index.ts
# packages/client/ui-sidebar/tests/apply.spec.tsx
# packages/client/ui-sidebar/tests/sidebar-root.spec.tsx
2026-07-23 04:25:01 +08:00
imccyu
9cf5a384e9
ci: fix jsdoc & coverage
2026-07-23 03:55:32 +08:00
imccyu
8b3d1ac943
refactor(gui): move the snapshot-store engine into the client runtime
...
The data layer no longer depends on the React glue package, and business
plugins no longer depend on web-react at all:
- The store engine (zustand vanilla + immer + persist + dev freeze),
defineStore, and shallowEqual move to @deepseek-ai/dsh-client-runtime,
exported from the ./client main entry — no ./store subpath survives on
either package (the web-react one is deleted, none is opened on runtime).
- Store products are bare snapshot sources: useSelector leaves
SnapshotStore/StoreInstance and Session; every hook is composed at the
binding site in web-react's renderer (per-source cached uSES binding).
The SlotRendererHost sessions face carries bare observables only.
- SessionProvider becomes a standard-kit seat: an entry whose children
declare a session-scope slot receives the framework component as a prop,
retiring the last value import of web-react from plugin packages.
UseSession and the session-area types now live in ui-slots.
- web-react shrinks to the shell-only React glue (renderer, providers,
uSES bridge); zustand/immer belong to runtime alone; the module-table
seed and tsdown externals drop the web-react/store seat.
- NODE_ENV replacement is defined once in the shared tsdown client preset
(browser bundles inline the engine and lost vite's define); the 3-line
process.env typecheck shim moves to runtime with the engine.
- Stray tsc artifacts (.js/.d.ts/.d.ts.map beside sources under src/)
swept repo-wide; they shadow real sources under vitest resolution.
Verified: both aggregate typecheck programs at zero; 604 client tests
green; repo-wide grep for web-react/store at zero; real-host playwright
run 7/7 including persist round-trip.
ci: fix test/docs
2026-07-23 03:30:06 +08:00
imccyu
004a988168
fix: slot
2026-07-23 03:25:11 +08:00
imccyu
1b0ea07bce
refactor(gui): slot system standard — single register, four props shares, framework store seat
...
The definitive slot model for the web client, replacing the first-generation
define/register two-step, ScopedSlots whitelist faces, and binding handles:
- 'root' is the only a-priori slot (SlotsService built-in); the shell renders
exactly ctx.slots.renderSlot('root', {}).
- register is the single API: children = slot declaration + render
authorization + runtime spec in one options object; misconfiguration fails
loud at load (duplicate declaration, undeclared contribution, one store
handle under two scopes).
- Component props arrive in four auto-derived shares: PropsRuntime<K>
(owner params + session/global standard kits via declare-merge),
PropsRenderSlots<S>, PropsStore<H>, and the inject business face.
sessionId is framework-supplied; hooks are framework-made only.
- Framework store seat: defineStore factories declare schema/actions/persist;
read = useStore, write = baked actions only; store scope derives from the
mounting entry; per-session persist keys and clearPersisted lifecycle.
- inject factories read the apply closure's own ctx (binding handles retired;
root-ctx back door closed); SessionProvider is self-wired render-prop.
- Rendering sits behind the SlotRenderer install seam; runtime stays
React-free; ownership ledger keyed to the single entry axis closes the
stale-authority window (StaleAuthorizationError probes).
Docs: the slot type-chain note is refreshed in place as the slot system
standard RFC (bilingual pair re-recorded); the web client architecture RFC
defers its slot sections there; packages/client/AGENTS.md gains the slot and
props discipline; gui-testing/web-styling notes drop missions/ references.
Tests: suites rewritten to the standard (props fed directly, real store
engines via createXXXStore().create(), no render machinery); load-time
negative samples for declaration/authorization/store conflicts; verified by
real-host playwright run (three columns, empty state, collapse, keyed session
remount, cross-slot selection sharing).
docs(ui-sidebar): point contract reference at the committed slot standard RFC
missions/ is workspace-local and never committed; the README must not cite it.
2026-07-23 03:25:11 +08:00
imccyu
efa4326ff4
refactor: client no export
...
docs: AGENTS.md
refactor: client no export 2
2026-07-23 03:25:10 +08:00
Tianyi Cui
690c53dc03
Merge pull request #468 from deepseek-harness/worktree/session-reference
...
feat(session): add cross-session references
2026-07-22 23:22:07 +08:00
Tianyi Cui
d5d6960184
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/module-graph.md
2026-07-22 23:17:02 +08:00
Tianyi Cui
e3981109b3
Merge pull request #467 from deepseek-harness/feature/persistent-pty-sessions
...
feat: add persistent PTY sessions
2026-07-22 23:02:42 +08:00
Tianyi Cui
995362c7e1
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
2026-07-22 23:01:30 +08:00
Tianyi Cui
b65afd320a
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
...
# Conflicts:
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/event-producer-consumer.md
2026-07-22 23:00:05 +08:00
Tianyi Cui
c9566d18bf
Merge remote-tracking branch 'origin/master' into worktree/pr467-retarget-latest-master
2026-07-22 22:58:33 +08:00
Tianyi Cui
72e1640959
Merge pull request #433 from deepseek-harness/rfc/pty
...
docs(agent-note): propose persistent PTY sessions
2026-07-22 22:57:42 +08:00
Tianyi Cui
cf5dfe46e7
Merge remote-tracking branch 'origin/rfc/pty' into worktree/pr467-retarget-latest-master
2026-07-22 22:50:55 +08:00
Tianyi Cui
17988a88e0
Merge remote-tracking branch 'origin/master' into worktree/pr433-retarget-latest-master
2026-07-22 22:50:02 +08:00
Tianyi Cui
2edfe65987
test(tui): await catalog failure rendering
2026-07-22 22:45:46 +08:00
Tianyi Cui
d99094b1ac
Merge updated rfc/pty into feature/persistent-pty-sessions
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/core-data-structures/core.md
# pnpm-lock.yaml
# scripts/gen-cordis-catalog.ts
2026-07-22 22:43:20 +08:00
Wenlu Wang
210ccc4af8
Merge pull request #338 from deepseek-harness/jsonl-packed-chunk-rows
...
feat(session): opt-in packed chunk rows in the JSONL log
2026-07-22 22:41:08 +08:00
Tianyi Cui
58ba7cf15b
Merge latest master into rfc/pty
2026-07-22 22:38:40 +08:00
Tianyi Cui
e962642926
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# packages/examples/acp-demo/README.md
# packages/examples/acp-demo/src/index.ts
# packages/examples/acp-demo/tests/built-bin.e2e.ts
# packages/examples/tui-demo/package.json
# packages/examples/tui-demo/src/index.ts
# packages/examples/tui-demo/tests/tui-agent.spec.ts
2026-07-22 22:38:17 +08:00
Tianyi Cui
b0f5d9e313
Merge commit 'refs/codex-unblock/20260722-pr338-master' into HEAD
...
# Conflicts:
# docs/event-producer-consumer.md
# examples/acp-agent/tests/acp.snapshot.ts
# packages/core/session/src/index.ts
# packages/examples/acp-demo/src/index.ts
# packages/session-persistence/session-persistence-jsonl/src/format.ts
# vitest.config.ts
2026-07-22 22:37:16 +08:00
Tianyi Cui
8f68ca93f5
Merge pull request #528 from deepseek-harness/worktree/pr338-packed-snapshot-all-kinds
...
test(snapshot): cover all packed chunk row kinds
2026-07-22 22:19:40 +08:00
Tianyi Cui
54aaab6807
Merge pull request #464 from deepseek-harness/worktree/semantic-session-checkpoints
...
fix(session): add semantic crash checkpoints
2026-07-22 22:18:37 +08:00
Tianyi Cui
53c3ab135d
test(snapshot): cover all packed chunk row kinds
2026-07-22 22:14:16 +08:00
Tianyi Cui
ecb77f5e0c
test(ci): stabilize cancellation and crash checkpoints
2026-07-22 22:14:14 +08:00
Tianyi Cui
7a8d5da3d3
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
2026-07-22 22:02:53 +08:00
Tianyi Cui
a3d17feb8c
Merge latest master into worktree/semantic-session-checkpoints
2026-07-22 22:01:38 +08:00
Tianyi Cui
ad4c37013a
test(snapshot): await cancelled turn durability
2026-07-22 22:00:48 +08:00
Tianyi Cui
277b65aa8c
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
...
# Conflicts:
# pnpm-lock.yaml
2026-07-22 22:00:00 +08:00
Tianyi Cui
fa43335624
Merge pull request #525 from deepseek-harness/worktree/web-bind-address
...
fix(web): default to loopback binding
2026-07-22 21:56:12 +08:00
Tianyi Cui
cd36467a19
Merge pull request #526 from deepseek-harness/worktree/pr338-preserve-chunk-envelope
...
fix(snapshot): preserve packed chunk timing on refresh
2026-07-22 21:52:47 +08:00
Tianyi Cui
f967537177
Merge remote-tracking branch 'origin/master' into worktree/web-bind-address
...
# Conflicts:
# apps/cli/src/bin.ts
2026-07-22 21:51:05 +08:00
Tianyi Cui
3679b4d829
Merge master into worktree/semantic-session-checkpoints
2026-07-22 21:49:24 +08:00
Tianyi Cui
2e9afef556
Merge pull request #449 from deepseek-harness/codex/session-scoped-sandbox-roots
...
fix(sandbox): resolve workspace roots per session
2026-07-22 21:46:27 +08:00
Tianyi Cui
db21dcfeae
Merge remote-tracking branch 'origin/master' into codex/session-scoped-sandbox-roots
2026-07-22 21:41:53 +08:00
Tianyi Cui
7e5d5795a5
test(sandbox): adapt scenarios to latest master
2026-07-22 21:41:25 +08:00
Tianyi Cui
10a55d7a27
Merge remote-tracking branch 'origin/master' into codex/session-scoped-sandbox-roots
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-14-cross-family-fs-sandbox.i18n.yaml
# .agents/notes/implemented/feature/2026-07-14-cross-family-fs-sandbox.md
# .agents/notes/implemented/feature/2026-07-14-cross-family-fs-sandbox.zh.md
# examples/acp-agent/README.md
# packages/examples/agent-spine-demo/package.json
# packages/fs/fs-sandbox/src/index.ts
# packages/fs/tool-fs-search/tests/tools.spec.ts
# packages/support/acp-snapshot/README.md
# packages/support/acp-snapshot/src/suite.ts
# pnpm-lock.yaml
# scripts/type-equiv.manifest.json
2026-07-22 21:37:30 +08:00
Tianyi Cui
6d756fd4c9
test(web): add race-free loopback smoke
2026-07-22 21:35:32 +08:00
Tianyi Cui
7b803be4ae
Merge branch 'master' into worktree/session-reference
2026-07-22 21:33:21 +08:00
Tianyi Cui
ce89c24476
Merge pull request #515 from deepseek-harness/worktree/run-all-gates
...
chore: restore an opt-in check-all command
2026-07-22 21:31:46 +08:00
Tianyi Cui
479e590029
fix(snapshot): align packed refresh by logical event
2026-07-22 21:28:38 +08:00
Tianyi Cui
3787bef665
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
...
# Conflicts:
# docs/config-catalog.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# packages/examples/tui-demo/src/index.ts
# packages/examples/tui-demo/tests/tui-agent.spec.ts
# packages/ui/tui/README.md
# packages/ui/tui/package.json
# packages/ui/tui/src/index.ts
# packages/ui/tui/tests/tui.spec.ts
# packages/ui/tui/tsconfig.json
# pnpm-lock.yaml
# vitest.config.ts
2026-07-22 21:27:18 +08:00
Tianyi Cui
325cd61644
test(tui): make elapsed refresh deterministic
2026-07-22 21:27:17 +08:00
Tianyi Cui
1167ea71b7
Merge latest master through rfc/pty into feature/persistent-pty-sessions
...
# Conflicts:
# docs/module-graph.md
2026-07-22 21:21:58 +08:00
Tianyi Cui
c848c7b15e
Merge refreshed rfc/pty into feature/persistent-pty-sessions
...
# Conflicts:
# docs/architecture.md
# docs/capability-seams.md
# docs/config-catalog.md
# docs/cordis-catalog/services.md
# docs/module-graph.md
# docs/tool-catalog.md
# examples/acp-agent/tests/acp.snapshot.ts
# examples/headless-agent/tests/headless.snapshot.ts
# examples/package.json
# packages/README.md
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/tools/tests/gen-tool-catalog.spec.ts
# pnpm-lock.yaml
# pnpm-workspace.yaml
# scripts/gen-tool-catalog.ts
# scripts/type-equiv.manifest.json
# website/.vitepress/config/api-sidebar.json
2026-07-22 21:12:16 +08:00
Tianyi Cui
9c6099fbbd
Merge branch 'master' into worktree/run-all-gates
2026-07-22 21:10:45 +08:00
Tianyi Cui
c5f353b073
Merge latest master into rfc/pty
2026-07-22 21:08:55 +08:00
Tianyi Cui
402f8c5f5a
Merge pull request #504 from deepseek-harness/tui-staging-merge-1
...
feat: TUI front end, dsh CLI, and installer on current master
2026-07-22 21:08:07 +08:00
Tianyi Cui
6613f43178
Merge remote-tracking branch 'origin/master' into worktree/pr468-retarget-latest-master
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/capability-seams.md
# docs/config-catalog.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/goal-snapshots/goal-session/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/bash-spill/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/cancel-tool-calls/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/cancel/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/config-options/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/error-finish/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/escalation-approved/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-edit/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-read/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-terminal-card/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/fs-write/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/goal-command-status/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/handshake/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-block/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/lsp-definition/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/model-switching/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/parallel-tool-calls/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/permission-switching/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/skill-load/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/text-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/todo-plan/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/stdout.expected.jsonl
# packages/ui/acp/acp-feature-support.md
# packages/ui/acp/src/index.ts
# packages/ui/acp/tests/harness.ts
# packages/ui/tui/README.md
# scripts/type-equiv.manifest.json
2026-07-22 21:06:50 +08:00
Tianyi Cui
822a0c4765
fix(build): exclude Vite app from package bundling
2026-07-22 21:03:37 +08:00