Commit Graph

828 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
imccyu
584e89d313 test: scaffold comment follows the storage-json home-anchored root 2026-07-31 15:09:10 +08:00
NI0317
d3ff2c3653 docs(onboarding): update internal testing notice 2026-07-31 15:04:24 +08:00
NI0317
1b2f05d438 Merge remote-tracking branch 'origin/master' into codex/sandbox-policy-context 2026-07-31 15:04:11 +08:00
NI0317
3da219461c Merge origin/master into codex/sandbox-policy-context 2026-07-31 15:03:11 +08:00
imccyu
95c238a74f Merge remote-tracking branch 'origin/master' into mergebot/pr1016 2026-07-31 14:51:15 +08:00
imccyu
06fc3c68a6 Merge pull request #1039 from deepseek-harness/worktree/composer-scroll-sync
fix(web): scroll the composer's glyph layer with its textarea
2026-07-31 14:48:41 +08:00
Chinesezjc
b155051d48 Merge remote-tracking branch 'origin/master' into feat/web-read-card
# Conflicts:
#	packages/client/ui-conversation/src/client/apply.ts
#	packages/client/ui-conversation/src/client/chat/GenericToolCard.tsx
#	packages/client/ui-conversation/src/client/skeleton/DetailsPanel.tsx
#	packages/client/ui-conversation/tests/chat-apply.spec.tsx
#	packages/client/ui-primitives/src/index.ts
2026-07-31 14:46:41 +08:00
imccyu
5dcb096015 Merge pull request #997 from deepseek-harness/worktree/chat-ui-polish
fix(web): polish chat activity and queue states
2026-07-31 14:45:23 +08:00
imccyu
4c01550833 Merge remote-tracking branch 'origin/master' into mergebot/pr1016 2026-07-31 14:43:03 +08:00
Tianyi Cui
e371311203 Merge latest Web transcript parent into manual compaction
# Conflicts:
#	examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
#	packages/client/runtime/README.i18n.yaml
2026-07-31 14:39:20 +08:00
Yichen Jiang
aa121e409f test(web): refresh running-turn snapshots 2026-07-31 14:38:27 +08:00
Tianyi Cui
5c394b1743 Merge latest master into web transcript projection
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
2026-07-31 14:31:14 +08:00
Yichen Jiang
936b8c4033 Merge remote-tracking branch 'origin/master' into worktree/core-web-minimal-profile 2026-07-31 14:29:12 +08:00
Yichen Jiang
3d438eb329 feat(cli): add minimal Core Web profile 2026-07-31 14:28:52 +08:00
creatixchu
22d6b1ed81 Merge remote-tracking branch 'origin/master' into worktree/composer-scroll-sync 2026-07-31 14:26:51 +08:00
Hypatia May
4f31fdeea6 test(web): include compact command in menu golden 2026-07-31 14:25:25 +08:00
Yichen Jiang
e0e48bfc10 Merge remote-tracking branch 'origin/master' into worktree/chat-ui-polish
# Conflicts:
#	apps/web/tests/snapshots/live-interactions/retry.expected.md
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 14:16:51 +08:00
_Kerman
b57291d272 Merge branch 'master' into xtr/trajectory-timeline-polish 2026-07-31 14:12:13 +08:00
imccyu
b8b5403f0a fix: ci 2026-07-31 14:08:13 +08:00
imccyu
d3e8f17a54 fix: review follow-ups for the session archive set
- WorkspaceRegistry.archiveSession no longer wraps persistence-listing
  failures as WorkspaceUnknownSessionError: only a definite miss (live
  lookup, header index, then a fresh list) maps to session-not-found;
  storage faults propagate as internal errors, with a negative test.
- The archived-current sweep moves from the unary path into the
  projection: any install path (local echo, another tab's frame, a
  reconnect baseline) clears a selection that landed in the archive set.
- An archive set installed while workspace.list is in flight supersedes
  the stale baseline's set instead of being rolled back by it.
- The workspace-management e2e anchors the archived row by its session
  actions button and asserts the single-stray fixture assumption loudly.
- Drop the stale touchSession rows from the workspace READMEs (the
  method was removed with its Agent Note).
2026-07-31 14:08:13 +08:00
imccyu
e235be2bac feat(ui-workspace): archive session from the row menu
The visual-only Delete session placeholder becomes a wired Archive
session action: no confirmation dialog (non-destructive), failures stay
console diagnostics. tree.ts hides archived sessions in every
derivation (workspace groups, Ungrouped, search, flat list) through the
sessionVisible predicate. The workspace-management e2e pins the archive
round trip across reload.
2026-07-31 14:08:13 +08:00
Tianyi Cui
74398e87f6 Merge latest master into Web transcript 2026-07-31 14:07:24 +08:00
creatixchu
dec1950b6a Merge remote-tracking branch 'origin/master' into worktree/composer-scroll-sync 2026-07-31 14:07:04 +08:00
Yichen Jiang
6acdb6631d Merge pull request #1036 from deepseek-harness/worktree/permission-default-settings
feat(permission): configure new-session defaults in Web settings
2026-07-31 14:05:00 +08:00
NI0317
8e7a36db01 test(web): publish welcome acknowledgement before browser boot 2026-07-31 13:59:29 +08:00
Tianyi Cui
bb3c0d127d Merge latest master into Web transcript 2026-07-31 13:50:34 +08:00
Tianyi Cui
49a40bbd8d test(web): remove abandoned sandbox wording experiment 2026-07-31 13:49:41 +08:00
Tianyi Cui
e088cfa59d refactor(sandbox-policy): remove capability family registries 2026-07-31 13:49:41 +08:00
creatixchu
676fee485a Merge remote-tracking branch 'origin/master' into worktree/composer-scroll-sync 2026-07-31 13:46:05 +08:00
Tianyi Cui
cff0e5d9a4 Merge master into codex/sandbox-policy-context 2026-07-31 13:45:37 +08:00
Yichen Jiang
75f2489ba1 Merge pull request #1031 from deepseek-harness/worktree/fix-models-settings
fix(web): improve Models settings presentation and safety
2026-07-31 13:44:11 +08:00
NI0317
cf4027afe8 Merge remote-tracking branch 'origin/master' into feature/gui-first-run-welcome
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
2026-07-31 13:41:17 +08:00