Commit Graph
595 Commits
Author SHA1 Message Date
Chinesezjc fa6ba79ddf Merge remote-tracking branch 'origin/feat/web-presenter' into feat/web-web-card
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 10:42:43 +08:00
ZiyaZhang 83d6be50aa Merge remote-tracking branch 'upstream/master' into feat/gui-full-access-confirmation 2026-07-30 19:32:51 -07:00
Yichen Jiang 11fde7bc1a Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
# Conflicts:
#	packages/client/ui-conversation/tests/chat-view.spec.tsx
2026-07-31 10:26:23 +08:00
imccyu ce57438ac0 Merge branch 'master' into codex/new-task 2026-07-31 10:23:14 +08:00
Yichen Jiang d3c6638b6d Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
# Conflicts:
#	apps/cli/README.i18n.yaml
#	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/src/client/chat/MessageItem.tsx
#	packages/client/ui-conversation/tests/chat-view.spec.tsx
2026-07-31 10:19:14 +08:00
_Kerman 7a463dbe44 Merge branch 'master' of https://github.com/deepseek-harness/deepseek-harness into xtr/react-loop-simplification
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-17-dedicated-full-screen-tui-front-door.i18n.yaml
#	docs/architecture.i18n.yaml
#	docs/cookbook/extension-cookbook.i18n.yaml
#	docs/cordis-catalog/events.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.i18n.yaml
#	docs/core-data-structures/core.md
#	docs/core-data-structures/core.zh.md
#	docs/core-data-structures/llm-streaming.i18n.yaml
#	docs/core-data-structures/llm-streaming.md
#	docs/core-data-structures/llm-streaming.zh.md
#	docs/core-data-structures/session.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/persistence-catalog.md
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/core/agent-loop/README.i18n.yaml
#	packages/core/agent-loop/src/agent.ts
#	packages/core/agent/README.i18n.yaml
#	packages/core/session/README.i18n.yaml
#	packages/core/session/src/types.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/tests/service.spec.ts
#	packages/sdk/sdk-client/README.i18n.yaml
#	packages/sdk/sdk-protocol/README.i18n.yaml
#	packages/sdk/sdk-protocol/README.md
#	packages/sdk/sdk-protocol/README.zh.md
#	packages/subagent/subagent-dsh-sdk/README.i18n.yaml
#	packages/ui/jsonrpc/README.i18n.yaml
#	packages/ui/jsonrpc/README.md
#	packages/ui/jsonrpc/README.zh.md
#	packages/ui/tui/src/index.ts
#	python/sdk/README.i18n.yaml
#	scripts/gen-cordis-catalog.ts
2026-07-31 10:16:14 +08:00
Hypatia May ff8c5600f4 Merge pinned master into status bar projection 2026-07-31 09:28:52 +08:00
Hypatia May 074f0e4393 Merge pinned master into Web transcript 2026-07-31 09:18:45 +08:00
Chinesezjc 22d8fa788b Merge remote-tracking branch 'origin/master' into feat/web-diff-card
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/src/client/chat/GenericToolCard.tsx
#	packages/client/ui-conversation/src/client/chat/ToolRow.tsx
#	packages/client/ui-conversation/src/client/skeleton/DetailsPanel.tsx
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/src/index.ts
2026-07-31 04:22:57 +08:00
imccyu 9433259f05 Merge remote-tracking branch 'origin/master' into mergebot/pr1005
# Conflicts:
#	docs/module-graph.md
#	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/apply.ts
#	packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
#	packages/client/ui-conversation/tests/input-bar.spec.tsx
#	packages/client/ui-conversation/tests/input-matrix.spec.tsx
#	packages/client/ui-plan/README.i18n.yaml
#	packages/client/ui-plan/README.md
#	packages/client/ui-plan/README.zh.md
#	packages/client/ui-plan/src/client/PlanModeControl.tsx
#	packages/client/ui-plan/src/client/index.ts
#	packages/client/ui-plan/tests/browser-plugin.spec.ts
#	packages/client/ui-plan/tests/plan-mode-control.spec.tsx
2026-07-31 03:47:24 +08:00
imccyu c9997311cf Merge remote-tracking branch 'origin/master' into mergebot/pr998
# Conflicts:
#	packages/client/ui-command/src/client/PopupSelectView.tsx
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/src/client/apply.ts
#	packages/client/ui-conversation/src/client/contract/slots.ts
#	packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
#	packages/client/ui-conversation/src/client/skeleton/PermissionSelect.tsx
#	packages/client/ui-conversation/tests/input-bar.spec.tsx
#	packages/client/ui-conversation/tests/input-matrix.spec.tsx
#	packages/client/ui-conversation/tests/input-scenarios.spec.tsx
#	packages/client/ui-conversation/tests/skeleton.spec.tsx
#	packages/client/ui-primitives/src/Modal.tsx
#	packages/client/ui-primitives/tests/atoms.spec.tsx
2026-07-31 03:14:44 +08:00
imccyu 810b45a377 Merge remote-tracking branch 'origin/master' into mergebot/pr1008
# Conflicts:
#	apps/web/tests/snapshots/cordis-tool-round/ui.expected.md
#	apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
#	apps/web/tests/snapshots/steering/settled.expected.md
#	packages/client/ui-conversation/src/client/chat/ChatView.tsx
#	packages/client/ui-conversation/src/client/chat/GenericToolCard.tsx
#	packages/client/ui-conversation/src/client/chat/ToolRow.tsx
#	packages/client/ui-conversation/src/client/contract/terminal-card-model.ts
#	packages/client/ui-conversation/src/client/skeleton/DetailsPanel.tsx
#	packages/client/ui-conversation/src/client/toolviews/ask-question-row.tsx
#	packages/client/ui-conversation/src/client/toolviews/bash-sample.tsx
#	packages/client/ui-conversation/src/client/toolviews/todo-row.tsx
#	packages/client/ui-conversation/tests/chat-tool-row.spec.tsx
#	packages/client/ui-conversation/tests/terminal-card.spec.tsx
#	packages/client/ui-trajectory/tests/client-bundle.spec.ts
2026-07-31 03:00:08 +08:00
imccyu 7730ffad4e test(web): refresh plan-review and seeded-history goldens after master merge 2026-07-31 02:45:22 +08:00
imccyu 1e10966ef6 wip
fix: docs
2026-07-31 02:13:53 +08:00
imccyu 4e7e99d748 Merge remote-tracking branch 'origin/master' into mergebot/pr1005
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 01:58:09 +08:00
Tianyi Cui cc119e39a6 Merge master into fix/turn-actions 2026-07-31 01:29:03 +08:00
Tianyi Cui 145a5eb9da Merge master into fix/turn-actions 2026-07-31 01:27:56 +08:00
imccyu 5d29a8aff3 Merge remote-tracking branch 'origin/master' into mergebot/pr1008
# Conflicts:
#	examples/web-cordis/cordis.yml
#	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/chat/ToolRow.module.css
#	packages/client/ui-conversation/src/client/chat/ToolRow.tsx
#	packages/client/ui-conversation/src/client/contract/slots.ts
#	packages/client/ui-conversation/tests/chat-branch-tails.spec.tsx
#	packages/client/ui-conversation/tests/chat-view.spec.tsx
2026-07-31 01:16:34 +08:00
Hypatia May ceb37f3377 Merge final master into Web transcript 2026-07-31 00:27:16 +08:00
imccyu e4e78e7a31 Merge remote-tracking branch 'origin/master' into mergebot/pr981 2026-07-31 00:22:36 +08:00
ZiyaZhang bf4ff3a696 Merge remote-tracking branch 'upstream/master' into feat/gui-full-access-confirmation
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 09:20:43 -07:00
Wenlu Wang edefdd96b9 Merge remote-tracking branch 'origin/master' into codex/new-task 2026-07-31 00:10:46 +08:00
imccyu c6c0f5de6a Merge branch 'master' into worktree/approval-panel-max-height 2026-07-30 23:49:19 +08:00
imccyu 5c4398c96c Merge branch 'master' into worktree/command-row-copy 2026-07-30 23:45:49 +08:00
Chinesezjc 91244321af Merge remote-tracking branch 'origin/master' into feat/web-diff-card
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 23:19:36 +08:00
Chinesezjc f9a40d555f docs: record ui-conversation README pairing hash after master merge 2026-07-30 22:59:34 +08:00
imccyu da9f02221e Merge remote-tracking branch 'origin/master' into worktree-forkweb 2026-07-30 22:53:07 +08:00
Hypatia May b86ce10741 Merge Web queue collapse from master 2026-07-30 22:50:09 +08:00
Chinesezjc 4a4ec6fd4d fix(web-search-card): follow base rename kind->shape and view-drops-content
The base (feat/search-presenter) renamed the search result view's discriminant
from `kind` to `shape` and removed the view's `content` field (a UI without a
card now falls back to the raw tool/result content). Adapt the web consumer:

- searchCardModel switches on `result.shape`; SearchBlock's own `kind` prop is
  mapped from it.
- The truncation recovery footer reads the block's raw `content` (where the
  `Full … stored at …` locator now lives) instead of the removed view content.
- Fixture grep/glob views use `shape` and drop `content`; the recovery footer
  rides the raw tool/result text.
- Tests and the bilingual Agent Note follow the rename and the recovery source.
2026-07-30 22:49:41 +08:00
Hypatia May c2940f620e Merge Web queue collapse from master 2026-07-30 22:48:45 +08:00
ZiyaZhang fa67427c39 Merge remote-tracking branch 'origin/master' into feat/gui-full-access-confirmation
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 07:48:33 -07:00
Chinesezjc 425e59119a Merge remote-tracking branch 'origin/master' into feat/web-diff-card
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 22:46:27 +08:00
Chinesezjc 05d48f2918 fix(web-read-card): carry the base's required read offset in fixtures and specs
The base's ReadResultView now requires `offset` (persisted so an empty window
still knows its start). The connection fixture's read sample and read-card.spec's
resultRead helper supply it (the window's first line, 41).
2026-07-30 22:40:39 +08:00
Chinesezjc e830ed7939 fix(web-search-card): surface truncation recovery, widen cardless fallback, validate wire shape, fix tail-cap
Address the ds-review-bot findings on the search card:

- searchCardModel dropped the result view's `content`, so a capped search's
  `Full … stored at: <locator>` recovery footer vanished from the UI (the card
  replaces the raw text). Thread it through as `SearchCardModel.recovery` and
  render it below the card at all three sites, only when truncated.
- SearchRow's fallback body was gated on `state === 'error'`, so a settled
  non-error call with no card (a successful nested run_code sub-dispatch, a
  legacy generic result) showed only its summary with content lost. Widen it to
  any settled call with `search === null`.
- searchCardModel trusted the `files`/`paths` shape the host wire schema only
  string-checks; a malformed known-kind frame would crash SearchBlock. Validate
  the full shape and fall to the generic path on mismatch.
- SearchBlock's restored tail file header added a row without consuming a tail
  slot, exceeding maxLines by one and overstating the hidden count. Make it
  consume a slot so the visible count holds at maxLines and `hidden` stays exact.

Correct the fixture JSDoc (now genuinely exceeds the row cap) and the Agent Note
recovery-text claim, sync the ui-conversation bilingual README with the search
row, and add an assembled keyless snapshot (apps/web/tests/search-card.snapshot.ts)
that pins the grep card's shape from the built bundles.
2026-07-30 22:40:07 +08:00
Chinesezjc c1d88ffb7b fix(client-web): pin keyed WebRow in boot smoke, show empty-search feedback
- built-boot smoke asserts [data-variant=web][data-tool=web_search/fetch]
  (the keyed WebRow) instead of [data-web] (which WebBlock draws even on the
  GenericToolCard fallback, so a silent keyed-registration failure passed).
- WebBlock renders an explicit empty-state note when a search returns no
  answer and no sources, instead of a blank <ol>; the chat row does not
  surface the raw result content, so the backend's 'No results found.' was
  otherwise invisible.
- README (ui-conversation, ui-primitives) and the frontend Agent Note record
  the unknown-web-kind null arm, the details-panel flattened body, and the
  empty-search copy; pairings re-recorded.
2026-07-30 22:24:57 +08:00
Chinesezjc 568c564db4 fix(web): update diff-card tests for the openFile no-double-resolve contract
The coverage lane caught a regression in the prior commit: FileMutationRow now
passes the tool's raw path to the injected openFile (which resolves against cwd
in apply.ts), but diff-card.spec still asserted the row pre-resolved. Assert on
the raw path instead. Also fix the built-boot diff assertion to match on the
line body and footer text — the `+ ` prefix is a CSS ::before, absent from
textContent.
2026-07-30 21:51:27 +08:00
Chinesezjc c7d95f5b7f fix(web-read-card): align read spec with real schema and correct grammar docs
Top-level read samples in read-card.spec use the read tool's real file_path
schema key (web_fetch keeps its own path key); the Input-JSON assertion follows.
The LANGS/LANG_ALIASES JSDoc no longer claims the TypeScript grammar embeds
JSX/TSX — shiki's TS grammar tokenizes JSX approximately, an accepted trade to
keep one JS-family boot grammar.
2026-07-30 21:46:05 +08:00
Chinesezjc 1fd6b5a107 fix(web): diff card review — TUI parity, path-header overlap, double-resolve
Bring the TUI diff footer onto the same terminator rule and distinct-path
count the Web DiffBlock uses (a trailing newline terminates its line; two
hunks in one file read as 1 file), so the two front ends' `+A -R · N file(s)`
footers agree. Reserve space in the diff path header for the floating copy
button so a long path no longer scrolls under it. Pass the tool's raw path to
the injected openFile (which already resolves against cwd) instead of resolving
twice. Rename the shared block-body CSS class to a card-neutral cardBody so a
terminal-spacing tweak cannot silently move the diff card. Add a same-file
two-hunk TUI unit test and an assembled built-boot assertion that the write
turn renders +1 -0 · 1 file end to end.
2026-07-30 21:36:42 +08:00
imccyu 3b370549a1 feat(client): increment forked session titles 2026-07-30 21:28:17 +08:00
imccyu 213de9a737 feat(ui-conversation): wire assistant session forks 2026-07-30 21:28:17 +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
Yif 78e4d36214 feat(web): unify tool-row expand interaction with IN/OUT card and trajectory Inspect
Every expandable tool row shares one interaction (whole-row toggle,
icon-to-chevron hover preview) and one expanded body: an IN/OUT
gutter-labeled card with per-section 150px scroll caps and sticky labels.
toolRowModel derives result output and the error first line, terminalFailed
surfaces a failing exit as the collapsed row's red dot, a hover Inspect
pill jumps to the call's trajectory record through a one-shot store
handoff, and the chat view keeps its scroll offset across view switches.
2026-07-30 21:21:29 +08:00
Chinesezjc c45cf2ae53 Merge remote-tracking branch 'origin/feat/search-presenter' into feat/web-search-card
# Conflicts:
#	packages/client/ui-conversation/src/client/chat/ToolRow.tsx
2026-07-30 21:05:55 +08:00
ZiyaZhang 8d4bf5ae41 chore(docs): refresh generated graph records 2026-07-30 06:01:47 -07:00
Hypatia May 538f23678a Merge origin/master into codex/status-bar-token-metrics
Build-review integration round 1; isolate Web snapshots from user skill homes.
2026-07-30 20:51:38 +08:00
Chinesezjc 6608ede1a0 fix(web-search-card): surface result text when an errored search has no card
grep/glob return no presentResult on an error result, so an errored search had
no card and the keyed SearchRow showed only a red dot — the model-facing error
text (bad pattern, missing path, a nested run_code dispatch with no card) was
nowhere on screen. Add an error-text arm mirroring the file-mutation and read
rows. Added tests for the text arm and its name/code fallback. The unknown-kind
fallback in search-card-model is already guarded (returns null → generic path).
2026-07-30 20:49:23 +08:00
ZiyaZhang 6d416b06c5 fix(client): gate every full access picker 2026-07-30 05:48:33 -07:00
kingwl 7da7d5784d Open command menu from composer plus button 2026-07-30 20:42:48 +08:00
Chinesezjc 224a9d5f09 fix(client-web): reject unknown web kind, lock fixture to contract, observe web card in boot smoke
- webCardModel returns null for an unknown web `kind` (wire from a newer host)
  instead of drawing it as a malformed fetch, matching the unknown-`card` and
  terminal-model wire-boundary default.
- Fixture WEB_SEARCH_RESULT/WEB_FETCH_RESULT and the source type derive from the
  contract's ToolResultView via Extract, so a new contract field fails at the
  type level rather than drifting silently.
- built-boot smoke asserts the web_search/web_fetch turns render their keyed
  WebRow cards, giving the registration and wire projection an assembled check.
- DetailsPanel comment no longer claims the card omits content for search.
- ui-primitives README inline-Chinese limitation now lists WebBlock's controls.
2026-07-30 20:42:29 +08:00