Commit Graph

3035 Commits

Author SHA1 Message Date
Ziya
7fdf685e5c Merge branch 'master' into feat/tui-extension-service 2026-07-23 04:02:19 -04:00
Turtle
5cdb192e92 Merge remote-tracking branch 'origin/master' into fix/web-zstd-session-logs 2026-07-23 16:00:27 +08:00
Turtle
3b97c7b318 fix(web): compress session logs by default 2026-07-23 15:54:10 +08:00
Tianyi Cui
8a7112af45 docs(i18n): translate turn and step in note comment 2026-07-23 15:06:47 +08:00
imccyu
62b62ac9d5 Merge remote-tracking branch 'origin/master' into codex/gui-context-polish
# Conflicts:
#	apps/web/tests/smoke-fixture.e2e.ts
2026-07-23 15:03:26 +08:00
Tianyi Cui
7ab9947776 Merge branch 'worktree/pr344-retarget-stack' into worktree/pr345-retarget-stack 2026-07-23 14:53:11 +08:00
Tianyi Cui
9dea41e3ba Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 14:53:06 +08:00
Tianyi Cui
e101a5774f Merge branch 'worktree/pr344-retarget-stack' into worktree/pr345-retarget-stack
# Conflicts:
#	.agents/notes/implemented/process/2026-06-17-ts-build-config.md
2026-07-23 14:51:21 +08:00
Tianyi Cui
a4d6c302f6 docs(i18n): align turn and step terminology 2026-07-23 14:37:01 +08:00
Tianyi Cui
fc1b308266 ci: keep required PR checks on portable runners 2026-07-23 14:31:01 +08:00
Tianyi Cui
2f2a095799 Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 14:22:44 +08:00
Dudu-0223
1ba00bf80c feat(web): inject workspace instructions 2026-07-23 14:11:25 +08:00
Dudu-0223
edb999fd0f test(gui): cover thinking row disclosure 2026-07-23 14:11:25 +08:00
imccyu
61dc4b6b99 Merge remote-tracking branch 'origin/master' into worktree/web-ask-user-question 2026-07-23 14:05:08 +08:00
Tianyi Cui
c79b34bda5 Revert "chore: run primary CI before push" 2026-07-23 14:02:58 +08:00
Hypatia May
fde4f8e502 Merge remote-tracking branch 'origin/master' into session-query-search 2026-07-23 13:57:57 +08:00
Hypatia May
0a0f19cf57 Merge remote-tracking branch 'origin/master' into session-query-search
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-10-session-query-service.md
#	.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md
#	.agents/notes/proposed/feature/2026-07-10-sqlite-session-query-provider.md
#	docs/architecture.md
#	docs/capability-seams.md
#	docs/config-catalog.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.md
#	docs/core-data-structures/persistence.md
#	docs/core-data-structures/session-query.md
#	docs/module-graph.md
#	docs/rfc/INDEX.md
#	packages/README.md
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/hooks/hooks-claude/tests/coverage.spec.ts
#	packages/session-persistence/session-persistence-jsonl/src/index.ts
#	packages/session-persistence/session-persistence-jsonl/tests/jsonl.spec.ts
#	packages/session-persistence/session-persistence-sqlite/README.md
#	packages/session-persistence/session-persistence-sqlite/src/index.ts
#	packages/session-persistence/session-persistence-sqlite/src/schema.ts
#	packages/session-persistence/session-persistence-sqlite/tests/sqlite.spec.ts
#	packages/session-persistence/session-persistence/README.md
#	packages/session-persistence/session-persistence/package.json
#	packages/session-query/README.md
#	packages/session-query/session-query/README.md
#	packages/session-query/session-query/package.json
#	packages/session-query/session-query/src/config.ts
#	packages/session-query/session-query/src/index.ts
#	packages/session-query/session-query/src/types.ts
#	pnpm-lock.yaml
#	scripts/gen-doc-graphs.ts
#	scripts/type-equiv.manifest.json
#	tsconfig.host.json
#	tsconfig.json
2026-07-23 13:56:56 +08:00
imccyu
d430744dd8 Merge branch 'master' into worktree/fix-collapsed-sidebar-rail 2026-07-23 13:45:14 +08:00
imccyu
23e942029a Merge remote-tracking branch 'origin/master' into worktree/fix-collapsed-sidebar-rail 2026-07-23 13:16:48 +08:00
Tianyi Cui
00d5b69882 chore: run primary CI before push 2026-07-23 13:09:52 +08:00
imccyu
698f46b0c9 feat(gui): morph the sidebar collapse instead of swapping renders
The collapse read as a hard cut: only the track width animated while the
panel content swapped instantly and the rail icons bore no relation to the
expanded layout. Now the four control rows persist across the transition —
collapse toggle, new session, new workspace, search, the same top-down
order as their expanded rows — and morph their geometry (row heights,
paddings, margins, capsule borders) on the deepsuite curve, so each rail
icon is its expanded control converging onto the 56px axis. Wide-only
content (brand, labels, input, session tree) cross-fades over 200ms, stays
mounted while the collapse animates, and unmounts at the 300ms settle,
still dropping the sessions subscription. The search query moves up to the
root and survives the round trip; rail search focuses the surviving input
after expand instead of remount-autofocus.
2026-07-23 13:03:32 +08:00
ZiyaZhang
2a1b3139f9 feat(tui): add interactive extension service 2026-07-22 21:30:17 -07:00
Yichen Jiang
9aa5b9f0dc Merge branch 'master' into worktree/llm-default-context-window 2026-07-23 12:28:19 +08:00
Yichen Jiang
6d7e4c339d feat(llm): add default context window fallback 2026-07-23 11:51:52 +08:00
imccyu
e4d3f6fd53 Merge branch 'master' into worktree-webts 2026-07-23 11:50:08 +08:00
imccyu
5da8e3b787 feat(gui): animate sidebar collapse and grow the rail control set
The collapsed rail becomes a 56px icon column (24px controls between 16px
paddings) carrying expand, new session, search, and new workspace — each
aligned with its expanded counterpart; rail search expands the sidebar and
focuses the search box. Collapse/expand now animates: the frame transitions
grid-template-columns (and the surviving handle its left) on the deepsuite
sider curve — --ds-ease-in-out over --ds-transition-duration-slow, supplied
by ui-theme's base sheet. Transitions pause during drags (data-dragging on
the frame, set for the whole gesture) and under prefers-reduced-motion.
2026-07-23 11:45:54 +08:00
Yichen Jiang
d93e0188a4 Merge branch 'master' into worktree/web-ask-user-question 2026-07-23 11:42:53 +08:00
Tianyi Cui
c240f326c4 Merge branch 'master' into worktree-webslot2 2026-07-23 11:08:36 +08:00
imccyu
7e6f0128b5 fix(gui): keep sidebar controls when collapsed
A closed sidebar previously resolved to a zero-width grid track, clipping
the only toggle and the settings entry with no visible recovery; the closed
preference persisted across reloads, locking the sidebar shut.

- columns.ts maps the closed preference (width 0) to a fixed 60px
  SIDEBAR_COLLAPSED rail through every step of the concession solve;
  closed details still resolve to zero width.
- AppFrame derives data-sidebar-collapsed and the sidebar slot's collapsed
  owner prop from the persisted preference instead of the resolved track
  width, and drops the resize handle while collapsed.
- SidebarRoot reads the owner collapsed prop; the expanded-only body is a
  separate component that unmounts while collapsed (dropping its sessions
  subscription), leaving the expand toggle and Settings in the rail.
- The keyless web smoke gains the ui-sidebar bundle (six real bundles) and
  pins the 60px rail collapse/expand round through the assembled client.
2026-07-23 10:51:57 +08:00
Tianyi Cui
08cc034128 Merge commit 'refs/codex-unblock/2026-07-23/base-511' into HEAD 2026-07-23 10:14:06 +08:00
Tianyi Cui
05c5775710 docs: describe code result fallback 2026-07-23 04:33:13 +08:00
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
Tianyi Cui
e7f62ab932 docs(tools): describe the output budget precisely 2026-07-23 04:18:48 +08:00
Tianyi Cui
7fe915f82b docs(tools): qualify default result limit 2026-07-23 04:16:57 +08:00
Tianyi Cui
38b4a06a13 docs(tools): record generic result fallback 2026-07-23 04:08:35 +08:00
imccyu
90b05c7a2b docs(i18n): re-record the web-client architecture pair after stacking on #538 2026-07-23 04:01:06 +08:00
Tianyi Cui
ff96387924 Merge branch 'codex/code-mode-typed-results' into codex/code-mode-complete-result-card
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-20-code-mode-typed-tool-returns.i18n.yaml
2026-07-23 03:59:53 +08:00
imccyu
de5c68eb1a docs(notes): retire current-state references to the deleted build graph
Three notes stated tsconfig.build.json as present-tense fact; the
aggregates (tsconfig.host.json / tsconfig.client.json) now own the
explicit reference lists and the root solution owns the emit graph.
Historical narration in dated notes is left untouched.
2026-07-23 03:59:35 +08:00
imccyu
21287abd78 docs(ts): bilingual pair for the solution-root Agent Note 2026-07-23 03:59:35 +08:00
imccyu
62125c0dcb docs(ts): document the solution-root TypeScript project layout
New authoritative section docs/development.md#typescript-project-layout
(five files, three roles, the program-vs-resolution principle and its two
disciplines), two repo conventions in AGENTS.md, package tsconfig shape in
packages/AGENTS.md, cookbook touch-lists updated for the two aggregates,
test source-plane rule in docs/testing.md. Decision record: new Agent Note
2026-07-22-tsconfig-solution-root-two-aggregates; ts-build-config note
updated in place (tsc-first pipeline unchanged); the two GUI RFCs now name
tsconfig.host.json. All bilingual pairs re-recorded. Doc budget ceilings
raised: AGENTS.md 1680, docs/testing.md 1020, packages/AGENTS.md 660 (two
new one-line conventions and one new section on already-near-ceiling docs).
Mission spec for the code-side migration: missions/tsconfig-single-graph-migration.md.
2026-07-23 03:59:35 +08:00
Tianyi Cui
4aac1514e4 docs(code-runtime): cover captured error construction 2026-07-23 03:51:25 +08:00
Tianyi Cui
ffbdabf39c docs(code-runtime): specify mutation-safe boundaries 2026-07-23 03:38:34 +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
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
Tianyi Cui
dcb6ecc095 Merge branch 'codex/code-mode-typed-results' into codex/code-mode-complete-result-card
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-20-code-mode-typed-tool-returns.i18n.yaml
2026-07-23 03:19:13 +08:00
Tianyi Cui
94adb60e1a fix(tools): preserve bounded fallback guidance 2026-07-23 03:15:15 +08:00
Tianyi Cui
27fe26f8d2 docs(code-runtime): record captured intrinsic boundary 2026-07-23 03:09:33 +08:00
Tianyi Cui
2821826e2c fix(pty): close final review gaps 2026-07-23 02:53:43 +08:00
Tianyi Cui
51a80845b8 Merge codex/code-mode-typed-results into codex/code-mode-complete-result-card
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-20-code-mode-typed-tool-returns.i18n.yaml
2026-07-23 02:39:48 +08:00
Tianyi Cui
a6b769c427 Merge codex/canonical-tool-output into codex/code-mode-typed-results 2026-07-23 02:32:53 +08:00