Commit Graph

8617 Commits

Author SHA1 Message Date
creatixchu
dab7670207 Merge remote-tracking branch 'origin/master' into worktree/unify-workspace-add 2026-07-31 16:29:11 +08:00
creatixchu
6184ba35ca fix(web): address the review round on the one-route add flow
- lifecycle-chrome's second scaffold staged its workspace under the OUTER
  scaffold's temp root, coupling two supposedly independent worlds and
  leaving the aria scrub root wrong; it now uses its own workspaceCwd.
- The direct-open path now carries the same `flowBusy` gate that disables
  the equivalent menu entry, so an occupant re-registering mid-adoption
  cannot raise a second flow.
- A composition with no directory-picker no longer opens a zero-entry
  popover on the hero anchor: with nothing to pick and nothing to add,
  the gesture shows nothing. Both behaviors gain a unit test.
- Brought three partially superseded Agent Notes current (the native
  picker, the workspace UI product flow, and the sidebar browsing split),
  cross-linked to this decision, both languages re-recorded.
- Corrected this Note's own Testing section: the shared e2e helper stages
  and adopts its directory, it does not create one in-dialog — only
  workspace-management does. Named the client-seam and CLI-README residue
  in the follow-up TODO alongside the wire branch.
2026-07-31 16:23:49 +08:00
creatixchu
171c18b9ca cleanup(web): drop the unimplemented user-message edit control
The user bubble's IconActions row carried an edit button with no click
handler, no client mutation, and no host operation behind it, advertising
an affordance the product cannot honor. The row now renders clock / copy /
branch only for both user and assistant chrome, and MessageIconActions
loses the `edit` prop with the button.

The package README records the missing capability under Known Limitations,
the web aria goldens pin the row without the control, and the Agent Note
states what must exist before it comes back.
2026-07-31 16:23:36 +08:00
Turtle
ce0aa90c1e feat(cli): dsh --dump-config / --dump-default-config print the composed tree
dsh --dump-config and dsh web --dump-config compose the shipped base,
the surface overlay, and the --config or personal overlay — exactly the
layers that surface boots — and print the entry list as YAML without
booting; --dump-default-config stops at the surface overlay so the two
outputs diff to precisely the user layer's effect.

The dump shares the mounting code: the vendored include exports its
patch algorithm as applyEntryPatches() and its !!js dialect as
entryListSchema (logged in vendor/README.md), dsh-app-boot's
renderConfigDump() composes and renders through both (and now imports
the dialect instead of duplicating it), and the CLI adds a thin
dump-config mode. !!js expressions print verbatim; unmatched patches
warn on stderr; boot-only flags are rejected alongside the dump flags.

(cherry picked from commit 1fdbebfa8a5dc7df840d53666320064a7e3dae59)
2026-07-31 16:20:54 +08:00
Tianyi Cui
1b59b3fc19 test(web): include context injection in search golden 2026-07-31 16:14:31 +08:00
creatixchu
8997afb3e5 fix(web): preserve hover-card selection and feedback 2026-07-31 16:13:12 +08:00
Chinesezjc
01d450f819 refactor(web-cards): route read/search/web/diff rows through collapsed ToolRow
The read, search, web, and file-mutation toolviews each hand-drew their own
summary-row chrome and kept their card (ReadBlock/SearchBlock/WebBlock/
DiffBlock) resident below the summary. Fold all four into the shared ToolRow:
ToolRow now takes read/search/web/diff card material alongside terminal, and
renders it in its collapsed-by-default expanded body, so every tool row shares
one expand interaction and starts collapsed. The GenericToolCard fallback and
the DetailsPanel Output section keep rendering the same cards (the panel at full
height); the per-row .module.css files are deleted as ToolRow owns the chrome.
2026-07-31 16:13:10 +08:00
Chinesezjc
6005fc93ca Merge remote-tracking branch 'origin/feat/web-search-card' into feat/web-cards-toolrow 2026-07-31 16:05:48 +08:00
Chinesezjc
6f4897f28e Merge remote-tracking branch 'origin/master' into feat/web-search-card 2026-07-31 16:05:16 +08:00
Chinesezjc
21cd241177 refactor(ui-conversation): extract shared toolview row-status helpers
SearchRow (this PR) and FileMutationRow (landed on master) independently carry
byte-identical rowStateStatus + rowResultText helpers, which the duplication gate
flags once both are present. Extract both into contract/toolview-status.ts and
consume them from both rows, deleting the clone rather than nudging it under the
threshold.
2026-07-31 16:04:45 +08:00
Tianyi Cui
1352c4ecd2 Merge remote-tracking branch 'origin/master' into worktree/pr962-mergeable-20260731 2026-07-31 16:03:36 +08:00
Wenlu Wang
9e11f438f3 Merge pull request #1035 from deepseek-harness/codex/web-default-search
feat(web): enable default search
2026-07-31 16:01:26 +08:00
Tianyi Cui
3826fe2c2d Merge pull request #1060 from deepseek-harness/docs/paper
docs: add cordis paper
2026-07-31 16:00:29 +08:00
Tianyi Cui
810a2a571c Merge pull request #1022 from deepseek-harness/codex/compact-english-checkpoint
fix(compact): stabilize checkpoint language
2026-07-31 15:57:49 +08:00
Chinesezjc
c4711d5439 test(web): refresh seeded-history/message-actions goldens for keyed read row
The read tool now renders through the keyed ReadRow (Read · {path} chrome with a
resident read card) instead of the generic disclosure row, so the seeded read
turns in these built-boot goldens change from an expandable `button "Read …"`
to the read row's icon + Read + path-link shape. Refreshed keyless.
2026-07-31 15:57:34 +08:00
Tianyi Cui
a285e292c8 Merge origin/master into codex/sandbox-policy-context 2026-07-31 15:57:10 +08:00
Chinesezjc
a7139b651c Merge remote-tracking branch 'origin/master' into feat/web-search-card
# Conflicts:
#	packages/client/connection/src/client/fixture.ts
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/src/client/apply.ts
#	packages/client/ui-conversation/src/client/chat/GenericToolCard.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/skeleton/DetailsPanel.module.css
#	packages/client/ui-conversation/src/client/skeleton/DetailsPanel.tsx
#	packages/client/ui-conversation/tests/chat-apply.spec.tsx
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.md
#	packages/client/ui-primitives/README.zh.md
#	packages/client/ui-primitives/src/index.ts
2026-07-31 15:55:40 +08:00
Chinesezjc
bbb94f18ec Merge remote-tracking branch 'origin/master' into feat/web-read-card 2026-07-31 15:55:39 +08:00
Shigma
ea93cf85f1 docs: add cordis paper 2026-07-31 15:54:36 +08:00
imccyu
fb7f8cc245 Merge branch 'master' into codex/status-bar-token-metrics 2026-07-31 15:54:20 +08:00
imccyu
870c55343d Merge remote-tracking branch 'origin/master' into fix/web-transcript-projection 2026-07-31 15:52:47 +08:00
imccyu
abc77e707e Merge remote-tracking branch 'origin/feat/manual-compact-single-lock' into feat/compaction-progress-visibility 2026-07-31 15:51:17 +08:00
imccyu
b2cd3d26da Merge remote-tracking branch 'origin/fix/web-transcript-projection' into feat/manual-compact-single-lock 2026-07-31 15:50:54 +08:00
creatixchu
e5563ae433 fix(locale): gate browser detection on window and tolerate a missing languages list
Node >= 21 exposes a global `navigator` reporting the machine's own language,
so gating detection on `navigator` let a non-browser boot of the client tree
resolve to `en` instead of the documented fallback; `window` is the browser
test. `navigator.languages` is spec-required but absent on some embedders and
older WebViews, where spreading it would throw at boot, so the walk tolerates
its absence and `navigator.language` covers that host.

The per-spec pin boilerplate collapses into one suite-level
`usePinnedBrowserLanguages('zh-CN')`, which owns the rationale in
dsh-client-test-runtime, and the English-browser e2e scenario now clears the
console warnings channel too — its page has no closing inventory spec.
2026-07-31 15:49:59 +08:00
Chinesezjc
3ee8b6c1d6 Merge remote-tracking branch 'origin/feat/web-read-card' into feat/web-cards-toolrow 2026-07-31 15:49:31 +08:00
Turtle
a21d6c0c5b Merge pull request #1054 from deepseek-harness/worktree-infdev01
Anchor storage-json root to $DSH_HOME/storages
2026-07-31 15:49:10 +08:00
imccyu
9ca02b4fc8 Merge remote-tracking branch 'origin/master' into fix/web-transcript-projection 2026-07-31 15:48:26 +08:00
creatixchu
d6231007af cleanup(web): give adding a Workspace one route
Both Workspace surfaces offered "Open local folder…" and "Create a new
workspace" for one outcome. The browse occupant already carries its own
New folder affordance, so picking a directory covered creating one; the
name dialog only added a second vocabulary and a create target the
operator could neither see nor choose.

The surviving entry is named after the outcome — "Add workspace…" — and a
menu now appears only where there is something to choose between: with no
Workspace listed (the add-only sidebar header, or an empty hero list) the
anchor gesture raises the directory flow directly instead of a one-row
popover. An empty list counts as final only after the list baseline lands,
and a composition with no directory-flow occupant hides the sidebar button
rather than offering a dead one.

WorkspaceCreateFlow becomes WorkspacePickFlow (createOnly -> addOnly) and
the injected createWorkspace narrows to { path }. The host's
workspace.create({ name }) branch and `dsh web --workspace-root` lost their
last product consumer; both are marked at the call site for a follow-up.
2026-07-31 15:47:40 +08:00
NI0317
da72e61251 test(web): include runtime context in loading golden 2026-07-31 15:47:05 +08:00
NI0317
ee404357a4 Merge origin/master into codex/sandbox-policy-context 2026-07-31 15:46:42 +08:00
Chinesezjc
50a625890f fix(web-read-card): mark read-row summary chrome jscpd:ignore
The keyed toolviews (read, file-mutation, web) each draw the same ToolRow
summary-line chrome; the read row's copy trips the duplication gate against the
file-mutation row. Extracting the shared row is a separate change tracked for
all rows at once, so this scopes the exemption to the read row's block.
2026-07-31 15:46:27 +08:00
Tianyi Cui
7906c1032f Merge pinned master into status bar token metrics 2026-07-31 15:41:52 +08:00
creatixchu
8714952c85 feat(web): copy values from hover cards 2026-07-31 15:38:22 +08:00
Hypatia May
b14c9daed2 Merge branch 'feat/manual-compact-single-lock' into feat/compaction-progress-visibility 2026-07-31 15:37:06 +08:00
Hypatia May
1114a80a45 Merge branch 'fix/web-transcript-projection' into feat/manual-compact-single-lock
# Conflicts:
#	examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
2026-07-31 15:36:49 +08:00
Hypatia May
d67de808b0 Merge remote-tracking branch 'origin/master' into fix/web-transcript-projection
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 15:32:36 +08:00
imccyu
a3b65f7e9c Merge branch 'master' into worktree-infdev01 2026-07-31 15:30:42 +08:00
Tianyi Cui
66f8cc074e Merge pull request #1027 from deepseek-harness/pr/adapter-registration-race
fix(tui): defer model-context resolution on the adapter-registration race
2026-07-31 15:29:09 +08:00
imccyu
d4250e927c doc: record the duplicated home-resolution expression and its extraction trigger 2026-07-31 15:27:42 +08:00
Hypatia May
85cef9de6f fix(tui): unify compaction progress presentation 2026-07-31 15:27:10 +08:00
creatixchu
cb754a0319 feat(locale): derive the initial Settings language from the browser
A first visit resolved to Chinese regardless of the browser: LocaleService
read `dsh.locale` and fell straight back to `zh` when nothing was stored,
ignoring the languages the browser already states it reads.

The initial locale now resolves through three ordered sources — the persisted
preference, then `navigator` (first entry of the ordered language list whose
primary subtag names a shipped locale, so `zh-Hans-CN` -> zh and `en-GB` ->
en), then `FALLBACK_LOCALE`. An explicit choice still wins and nothing writes
the detected locale back to storage, so "has the user chosen?" stays a
question only the stored value answers.

Specs asserting the shipped Chinese copy now state the browser they assume:
the web e2e scenarios open their page with `locale: ZH_BROWSER_LOCALE`, and
package specs pin it through the new `pinBrowserLanguages` test helper.
`settings-chrome.e2e.ts` gains an English-browser scenario as the
assembled-app proof.
2026-07-31 15:26:46 +08:00
kingwl
c08e8d00f7 Merge origin/master into codex/web-default-search
# Conflicts:
#	apps/web/tests/scaffold.ts
2026-07-31 15:26:29 +08:00
Tianyi Cui
b2146d6298 Merge branch 'master' into pr/adapter-registration-race 2026-07-31 15:24:43 +08:00
Chinesezjc
1c58d8daeb Merge pull request #974 from deepseek-harness/feat/search-presenter
feat(fs): add a search render-intent card for grep and glob results
2026-07-31 15:24:22 +08:00
Tianyi Cui
81e5ee7e3e Merge branch 'master' into pr/adapter-registration-race 2026-07-31 15:22:35 +08:00
NI0317
1beb38554e fix(review): align runtime-context diagnostics and docs 2026-07-31 15:19:59 +08:00
imccyu
fa7ea5c01c doc: storage-root note tracks the shipped $DSH_HOME/storages overlay anchor 2026-07-31 15:18:02 +08:00
NI0317
63404c7a31 Merge latest origin/master into feature/tui-first-run-welcome 2026-07-31 15:15:38 +08:00
NI0317
dbb87f02bf copy(tui): disclose Session Log upload in Chinese welcome 2026-07-31 15:15:14 +08:00
creatixchu
6ca3b78e55 Merge remote-tracking branch 'origin/master' into worktree-session-hover-menu-fix
# Conflicts:
#	apps/web/tests/workspace-management.e2e.ts
2026-07-31 15:14:05 +08:00