Commit Graph
9203 Commits
Author SHA1 Message Date
Chinesezjc 59abbb5964 Merge remote-tracking branch 'origin/master' into feat/search-presenter 2026-07-31 13:04:53 +08:00
Tianyi Cui fbf28700af Merge master into codex/sandbox-policy-context
# Conflicts:
#	apps/web/tests/snapshots/live-interactions/retry.expected.md
#	apps/web/tsconfig.json
#	tsconfig.host.json
2026-07-31 13:04:21 +08:00
Chinesezjc a2fa8ccbcf Merge remote-tracking branch 'origin/master' into feat/read-presenter 2026-07-31 13:03:05 +08:00
kingwl 7ddbbe2095 test(web): align search golden with latest master 2026-07-31 13:02:00 +08:00
kingwl 5759c287a2 fix(web): narrow default search review scope 2026-07-31 12:58:50 +08:00
kingwl 8d36353157 docs: archive superseded TUI path note 2026-07-31 12:58:46 +08:00
kingwl 2b2f109dcb fix(web): keep default capability search-only 2026-07-31 12:58:46 +08:00
kingwl 81ff2894ca fix(tui): bound diff rendering work 2026-07-31 12:58:30 +08:00
kingwl 7091e0db74 test(web): refresh search snapshot after master merge 2026-07-31 12:58:15 +08:00
kingwl 902926c7bb feat(web): enable default search and fetch 2026-07-31 12:58:06 +08:00
Yichen Jiang 62ad488020 ci: refresh pull request mergeability 2026-07-31 12:51:23 +08:00
Chinesezjc 64c855737d Merge remote-tracking branch 'origin/master' into feat/web-diff-card
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.md
#	packages/client/ui-conversation/README.zh.md
2026-07-31 12:50:58 +08:00
_Kerman 4eff494a6c Merge branch 'master' into xtr/trajectory-timeline-polish 2026-07-31 12:50:30 +08:00
Wenlu Wang c0b2b20b2f Merge pull request #947 from deepseek-harness/codex/responsive-queue-panel
fix(web): align queue panel with responsive composer
2026-07-31 12:49:44 +08:00
NI0317 85d1c5e2ad Merge remote-tracking branch 'origin/master' into feature/gui-first-run-welcome
# Conflicts:
#	packages/client/ui-settings-general/src/client/index.ts
#	packages/client/ui-settings-general/src/client/locales.ts
#	packages/client/ui-settings-general/tests/apply.spec.ts
#	packages/client/ui-settings/README.i18n.yaml
#	packages/client/ui-settings/README.md
#	packages/client/ui-settings/README.zh.md
#	packages/client/ui-settings/src/client/index.ts
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/src/api-proxy.ts
2026-07-31 12:48:39 +08:00
Yichen Jiang f45b6f76a5 fix(web): remove tool-call settings placeholder 2026-07-31 12:48:39 +08:00
Yichen Jiang ee74b5b07a feat(permission): add new-session default setting 2026-07-31 12:48:19 +08:00
imccyu 68a99cf75c Merge branch 'master' into codex/responsive-queue-panel 2026-07-31 12:44:53 +08:00
Ziya e130f7afa7 Merge pull request #998 from deepseek-harness/feat/gui-full-access-confirmation
feat(client): confirm before enabling full access
2026-07-31 00:43:40 -04:00
creatixchu 2143361195 fix(web): reserve one scrollbar gutter across the composer's text layers
Second review round escalated the wrap-width divergence from a separate
concern to a defect in this fix's own premise, and it is right.

Only .input scrolls, so only .input loses content width to a scrollbar that
consumes layout space — what Windows and Firefox draw, and what the theme's
global `::-webkit-scrollbar` width makes chromium treat as occupying space.
A narrower .input wraps a long soft-wrapped draft onto more lines, so it
grows taller, its scroll maximum exceeds the backdrop's, and the mirrored
offset clamps below the caret. That is the same failure the trailing-line
sentinel fixes, in the same direction, so deferring it would have shipped a
fix that does not hold where users run a classic scrollbar.

My first attempt to reproduce it found nothing and was wrong: the probe
content was not wrap-sensitive. With varied-length words the effect is
plain — the same draft laid out at 8px-apart widths differs by 2 to 5
lines, while at equal widths a textarea and a div agree exactly.

The three layers now reserve the gutter together, in the shared metrics
block that already exists to keep them symmetric. `overflow: hidden` is
still a scroll container, so the non-scrolling layers honour it: 8px is
reserved on each, measured. The cost is a text column 8px narrower on every
platform, which is the price of one geometry rather than a per-platform one.

The browser scenario asserts the premise directly — equal wrap widths, and a
reserved band greater than zero on each layer. The band is what stops the
assertion being vacuous: the widths would also match with no reservation at
all on this engine's overlay scrollbar, and it is the reservation, not the
match, that carries the guarantee to a platform whose scrollbar takes real
width. Removing the declaration fails it with `expected 0 to be greater
than 0`, and fails the golden with it.

Also from the same round, three comment corrections: the e2e file header no
longer describes the deleted layout effect, the measurement guard no longer
claims the backdrop holds exactly one text node (the sentinel makes a
second), and the sentinel comment now carries the one-sidedness argument
that also settles the ghost hint — the mirror only fails when the backdrop
is SHORTER, and the hint can only add content, never remove a line box.
2026-07-31 12:39:52 +08:00
NI0317 fd718ac126 Merge latest origin/master into feature/tui-first-run-welcome
# Conflicts:
#	apps/cli/README.i18n.yaml
2026-07-31 12:37:10 +08:00
NI0317 f30579dbaa refactor(tui): own overlay terminal primitives 2026-07-31 12:36:24 +08:00
Wenlu Wang 4e345c38a9 Merge branch 'master' into codex/responsive-queue-panel 2026-07-31 12:34:57 +08:00
Chinesezjc eebcbbbe4e Merge remote-tracking branch 'origin/feat/search-presenter' into feat/web-search-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.module.css
#	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 12:27:30 +08:00
NI0317 10e0c2711f test(web): scope welcome notice to onboarding scenarios 2026-07-31 12:26:44 +08:00
NI0317 a7907f9fa9 fix(web): keep onboarding steps visually continuous 2026-07-31 12:26:16 +08:00
imccyu 5afdb5c235 Merge remote-tracking branch 'origin/master' into mergebot/pr998
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 12:23:03 +08:00
Tianyi Cui 4a061f33d0 Merge pull request #963 from deepseek-harness/feature/readme-current-capabilities
docs: refresh root README for current capabilities
2026-07-31 12:16:01 +08:00
creatixchu f8ef2cf36b fix(web): give the backdrop the trailing-line sentinel so the layers share one extent
Review caught a real divergence the earlier measurements missed: mirroring
an offset is only correct while both layers can reach it, and for a draft
ending in a newline the backdrop could not.

A textarea reserves a line box for the caret after a final newline.
`white-space: pre-wrap` collapses a text node's trailing newline and
generates none. So a draft ending in a newline made the backdrop exactly one
line shorter than the textarea — measured 628 against 652 — and the mirrored
assignment clamped, leaving the glyphs one line behind the caret at the very
bottom of the draft.

The backdrop now carries the same trailing-line sentinel the mirror div has
carried all along: its content is the decoration walk plus one newline. The
same pre-wrap collapse absorbs it when the draft does not end in a newline,
so it costs no height in the ordinary case, and it supplies the missing line
box when it does. Verified in isolation first: a bare pre-wrap div measures
180/180/198 against a textarea's 180/198/216 for zero, one and two trailing
newlines, and 180/198/216 with the sentinel.

Coverage for the shape that exposed it: the browser scenario asserts the two
extents are equal before asserting the glyphs reach the end, observing each
layer's maximum by asking for an impossible offset and reading back the
clamp rather than computing it from scrollHeight, and the golden records the
relation. The unit spec pins the backdrop's text as the draft plus exactly
one newline. Removing the sentinel fails both, the e2e with the same 628
against 652.

The scrollbar-gutter half of the same review point does not reproduce here:
both layers measure clientWidth 776 against a border box of 776 while the
draft overflows, so this engine's textarea scrollbar is an overlay and takes
no width out of the wrap.
2026-07-31 12:12:54 +08:00
Yichen Jiang 7c2e5a740d Merge pull request #665 from deepseek-harness/worktree/web-model-request-retry
feat(web): retry transient model requests
2026-07-31 12:11:55 +08:00
Chinesezjc 18b8a1506a Merge remote-tracking branch 'origin/feat/read-presenter' into feat/web-read-card
# Conflicts:
#	apps/web/tests/snapshots/code-mode-round/ui.expected.md
#	packages/client/ui-conversation/src/client/chat/GenericToolCard.tsx
#	packages/client/ui-conversation/src/client/skeleton/DetailsPanel.tsx
#	packages/client/ui-primitives/src/index.ts
2026-07-31 12:03:11 +08:00
creatixchu 07448093c5 fix(web): drop the redundant second mirror
The first version coupled the layers from two places: a `scroll` listener
and a layout effect keyed on the committed draft. Mutation-testing each
hook alone against the built client shows the effect never fires the only
assignment that matters — with just the layout effect disabled the browser
scenario stays green, while disabling just the listener fails it.

Both premises behind the effect were wrong. Typing scrolls the caret into
view, which is an ordinary `scroll`. A draft that shrinks past the current
offset clamps both layers to the same maximum, because their extents are
equal — measured in chromium at 964/964, 1012/1012, 844/844 and 820/820 for
plain, soft-wrapped, unbreakable-run and highlighted drafts — and the
textarea's clamp fires `scroll` too.

The hazard the effect was imagined to cover does not exist either: React
replacing every child of the backdrop when the decoration set changes shape
preserves `scrollTop` (measured: 300 stays 300 through a full child
replacement), and the only replacement that zeroes it shrinks the content
below the offset, which is the clamp case already covered.

The e2e's edit case survives, retitled to say what it actually pins: that
typing is not a separate case needing its own mirror. The unit spec now
asserts the backdrop tracks a second move back to the top, which a one-shot
mirror would fail.
2026-07-31 12:02:38 +08:00
NI0317 b34eb84b81 Merge latest origin/master into feature/tui-first-run-welcome 2026-07-31 12:02:23 +08:00
NI0317 1b4c11e7d7 fix(tui): await mounted welcome overlay service 2026-07-31 12:02:13 +08:00
Tianyi Cui 3d6decedba chore(agent-loop): flag request context code smell 2026-07-31 11:59:22 +08:00
ZiyaZhang 01ccfc0ad3 fix(ci): align Knip config with CI 2026-07-30 20:58:28 -07:00
Ziya a5476afa08 Merge branch 'master' into docs/third-party-notices 2026-07-30 23:57:28 -04:00
Chinesezjc 4bcec15edd Merge remote-tracking branch 'origin/master' into feat/web-diff-card
# Conflicts:
#	apps/web/tests/built-boot.snapshot.ts
#	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/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 11:56:28 +08:00
Tianyi Cui 0bad6b7414 Merge origin/master into feature/readme-current-capabilities 2026-07-31 11:54:52 +08:00
creatixchu a7b7066267 fix(web): scroll the composer's glyph layer with its textarea
A composer draft past the 14-line cap could not be scrolled: the caret and
the selection moved, but the words stayed frozen at line 1, so the tail of
anything longer than the cap was unreachable while writing it.

The composer paints its text in two stacked layers. The textarea owns the
value, the selection and the caret but renders its own glyphs transparent;
every visible character is painted by the decoration backdrop beneath it,
which also carries the claim-token highlight, the chips and the ghost hint.
The backdrop is `inset: 0; overflow: hidden` — clipped, not scrolled — and
nothing linked its offset to the textarea's. Below the cap both layers rest
at 0, which is why the defect hid behind every short-draft screenshot and
fixture.

InputBar now mirrors the textarea's scrollTop onto the backdrop, from a
`scroll` listener (every gesture and every caret-driven scroll) and from a
layout effect keyed on the committed draft (an edit reflows both layers
without necessarily firing a scroll event).

Scrolling is layout, so jsdom cannot show this: the unit spec stubs both
offsets and proves the mirroring paths run, while a new browser scenario
measures the user-visible fact against the built client with a DOM Range
over the backdrop's own text — after a wheel gesture over a 40-line draft
the last line is on screen and the first has scrolled out. Confirmed both
directions: with the mirroring reverted and the packages rebuilt, the
golden reads `last draft line is on screen: false` while `textarea moved:
true`.
2026-07-31 11:53:04 +08:00
ZiyaZhang 45e5317ecd fix(ci): stabilize merged coverage gates 2026-07-30 20:52:35 -07:00
Hypatia May 322950487e fix(apiproxy): let commands outlive unary deadline 2026-07-31 11:51:49 +08:00
Hypatia May aab3d003e0 docs(tui): clarify compaction disposal outcome 2026-07-31 11:51:26 +08:00
Chinesezjc 17bb02190b fix(fs): regenerate doc graphs and refresh glob-sampling golden after merge
The master merge left docs/event-producer-consumer.md stale (regenerated) and
the master-introduced fs-glob-sampling scenario now carries the search-card
`meta` this branch projects from glob (refreshed golden).
2026-07-31 11:50:10 +08:00
Yichen Jiang 8763491a9d Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-31 11:49:02 +08:00
kingwl 51beb34f97 Merge origin/master into codex/fix-tui-diff-context-counts 2026-07-31 11:46:57 +08:00
Hypatia May 949b9fba8d feat(tui): add transcript compaction progress marker 2026-07-31 11:46:43 +08:00
Ziya ade8358e67 Merge branch 'master' into feat/gui-full-access-confirmation 2026-07-30 23:45:31 -04:00
ZiyaZhang 9095d3874a test: file the committed-manifest case under the parser it exercises 2026-07-30 20:45:12 -07:00
Chinesezjc 3248955f44 Merge pull request #987 from deepseek-harness/feat/web-web-card
feat(web): render web_search/web_fetch output as a web card
2026-07-31 11:44:57 +08:00