Commit Graph
18711 Commits
Author SHA1 Message Date
Yichen Jiang 4036db4450 test(web): create reference fixtures before the workspace connects
CI's snapshots lane timed out waiting for the folderx candidate: the
fixture directory was created after connectFreshWorkspace, racing the
Host's file index on a loaded runner. Land every fixture (and the
workspace directory itself) before the connect, and give the first
folder query a cold-start allowance.
2026-08-24 16:57:38 +08:00
Yichen Jiang dad39c8c18 feat(web): settle folder references on pick and move descent to a drill verb
A directory row in the @ menu had one verb doing two jobs: picking it
inserted literal @dir/ text and kept the menu open, so a user wanting
the folder itself never got a settled entity — the token kept its
trigger character and stayed editable, nothing like a file's atomic
chip.

Split the intents on the same row, mapped to shell-completion instincts:
row click / Enter settles the directory as an atomic folder chip (the
file chip's exact language; canonical @dir/ mention as its serialized
form — the { insert } arm the folder path never took), while Tab or the
row's trailing chevron drills: literal editable text, menu open on the
children. One new dimension carries it: candidate.drill advertises the
verb, InputTriggerPick.action reports it, ArbitrateKey gains 'tab', and
the keymap intercepts Tab only while a drill row is highlighted.

Covered by controller arbitration, MenuView chevron routing, the
ui-reference verb split, a keymap Tab-passthrough spec, and a real-
browser e2e driving all three gestures; menu golden refreshed for the
chevron and the fixture directory.
2026-08-24 16:45:34 +08:00
Dudu-0223 32d7092c84 Merge remote-tracking branch 'origin/master' into codex/pr-365-fixes 2026-08-24 16:33:31 +08:00
Dudu-0223 a268aada8c fix(spill-local): harden startup cleanup 2026-08-24 16:33:15 +08:00
Hypatia May 4db19c352e docs(token-meter): distinguish projection and measurement folds 2026-08-24 16:24:13 +08:00
Hypatia May 58a0e450b3 perf(token-meter): commit the surface fold in place through a plan/commit pair
foldSurfaceTokens rebuilt the priced surface on every surface event: an
append allocated [...nodes, node] and a replacement copied the whole
array before splicing, charging every well-formed event O(surface) for
an atomicity property only malformed events need. Benchmarks put the
copy at ~99.9% of an append's cost (100µs at a 50k-node surface vs
0.1µs for pricing) with O(S²) accumulation over a session, inside the
synchronous session/event publication path.

Split the fold into the session core's planSurfaceEvent/applySurfacePlan
shape: planSurfaceTokens performs every fallible step against the
read-only surface, commitSurfaceTokens applies the plan in place and is
infallible by construction. _foldEvent plans first, runs the remaining
fallible anchor validation, and only then commits, so retry identity is
preserved by ordering instead of by allocation. Appends drop to
amortized O(1) (100.3µs -> 1.9µs at 50k nodes); replacements keep their
O(surface) findIndex but stop paying the extra full copy (21µs -> 4.2µs).

A new regression test pins the one hazard this introduces: an event
whose surface plan is valid but whose later anchor validation throws
must leave the priced surface and running total uncommitted across
repeated failures.
2026-08-24 16:24:12 +08:00
creatixchu ebb8010b56 Merge remote-tracking branch 'origin/master' into worktree/2885-image-compression
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/llm/llm-deepseek/README.i18n.yaml
#	packages/llm/llm-deepseek/README.md
#	packages/llm/llm-deepseek/README.zh.md
#	packages/llm/llm-deepseek/src/adapter.ts
2026-08-24 16:23:34 +08:00
_Kerman 5fe36b513e fix(ci): restore acp snapshot transcripts and windows coverage gate ordering
- The base-mounted projection cache's write-behind forces session-log
  flushes at cache-chosen times, splitting packed chunk rows and collapsing
  the persistence window the keyless acp transcripts pin. ACP exposes no
  session-listing surface, so the automation profile disables the base row,
  restoring the pre-base behavior the fixtures were recorded against.
- The windows coverage lane runs suites that read built lib/ output (the
  webworker-packer image tests) and raced the build gate's tsdown writes
  against a partial tree; every coverage gate now waits for the build gate.
2026-08-24 16:17:19 +08:00
CreatixChu 6ac321d990 Merge pull request #2990 from deepseek-harness/worktree/model-readable-image-paths
feat(attachment): expose model-readable image paths
2026-08-24 16:14:55 +08:00
creatixchu 4863890535 fix(attachment): route image encoding by alpha over shared quality ladders
Delete the 5-bit colour-count classifier and palette PNG branch that
misrouted high-frequency photographic JPEGs (issue #2885 images 23/24)
into an encoder 100x slower with 4x larger output. Both normalization
and request-image encoding now route by the decoded alpha fact alone:
opaque sources down a JPEG ladder and alpha sources down a WebP
effort-0 ladder, each at qualities 85/75/60. Byte budgets become ladder
targets: the downscale retry loop is gone and a ladder-exhausted encode
keeps its smallest output, while provider byte caps stay enforced at
the transmitting route. Request transforms move to request-image-v5.
2026-08-24 16:14:32 +08:00
Yichen Jiang 836be779e9 Merge pull request #3004 from deepseek-harness/worktree/3002-restore-deep-diving-copy
fix(client): restore branded running copy
2026-08-24 16:14:10 +08:00
Yichen Jiang d61ba08685 fix(client): restore branded running copy 2026-08-24 16:04:17 +08:00
creatixchu 7bad88206b test(llm): 覆盖执行环境图片路径解析 2026-08-24 16:01:49 +08:00
creatixchu 5c799a9520 fix(attachment): 修正 Windows 只读发布顺序 2026-08-24 15:44:42 +08:00
Dudu-0223 545d177911 fix(spill-local): make startup cleanup race-safe 2026-08-24 15:36:51 +08:00
Dudu-0223 dbb3bcca8e test(spill-local): v8-ignore the two race-only sweep catch branches
The exact-shape fix added two filesystem-failure catch branches that only
fire on a race/permission fault the caller already guards against (the
session-dir readdir after an isDirectory() check, and the discovered-root
rmdir after the root was observed empty). Neither is deterministically
reproducible in-process, so tag both with the same reasoned v8 ignore the
sibling catch blocks already use, restoring per-file 100% coverage and the
symmetry between the parallel rmdir handlers.
2026-08-24 15:36:51 +08:00
Dudu-0223 c6a4de6207 fix(spill-local): exact-shape root/session matching and prune discovered roots
Tighten the startup sweep to backend-generated name shapes and fix the tests
that had drifted from the SweepRoot-based API:

- Match roots by the exact `dsh-spill-<6>` mkdtemp shape and session dirs by
  `session-<12 hex>` (DEFAULT_ROOT_RE / SESSION_DIR_RE), replacing loose
  startsWith checks so foreign or fixture-shaped directories are never swept.
- Carry `SweepRoot { path, pruneWhenEmpty }` through SweepOptions so a discovered
  prior-default root is removed once emptied while the active root is never
  pruned; lstat each session entry so a symlinked session dir is not followed.
- Fix the tests to the SweepRoot API: import SweepRoot, correct the gatherRoots
  override return shapes, build discovery fixtures with the real mkdtemp shape,
  and route the warn-wiring test through a deterministic failure path.
2026-08-24 15:36:51 +08:00
Dudu-0223 2f430f2fbd feat(spill-local): one-shot startup cleanup for local spill files
The local spill backend never reclaimed its files, so configured roots
grew without bound and default per-process dsh-spill-* temp roots piled
up across runs. Immediate deletion is unsafe because persisted, resumed,
and forked sessions may still reference an older locator.

Add a fiber-owned, best-effort sweep that runs once after activation
(never delaying availability, awaited on disposal): it deletes regular
files older than cleanupPeriodDays (default 30; 0 disables) across the
configured root and prior default temp roots, prunes emptied dirs, and
skips symlinks/unknown entries. Every filesystem failure is contained
and logged, so the sweep cannot fail activation or a concurrent write.
2026-08-24 15:36:51 +08:00
imccyu 15ddb2edc4 test(web): wait for stable preview onboarding 2026-08-24 15:28:14 +08:00
_Kerman 334dd53c92 Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2781
# Conflicts:
#	.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.i18n.yaml
#	.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md
#	.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/api/session-controller/tests/session-cold.host.spec.ts
#	packages/bundle/web-app/package.json
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/session/session-projection-cache/package.json
2026-08-24 15:13:10 +08:00
imccyu 1a36d5c6f5 style(client): stack local build metadata 2026-08-24 15:08:14 +08:00
Turtle 720c5c247c fix(client): localize local build banner 2026-08-24 15:04:01 +08:00
Turtle 17bde3f5be feat: label local build banner 2026-08-24 15:04:01 +08:00
Turtle 749c4ef93e fix: sample dev web metadata at startup 2026-08-24 15:04:01 +08:00
Turtle b636b01092 test: update client build fixtures 2026-08-24 15:04:01 +08:00
Turtle 65a8d6be1b feat(client): show build version in local banner 2026-08-24 15:04:00 +08:00
creatixchu b5182e2ac2 Merge remote-tracking branch 'origin/master' into worktree/model-readable-image-paths 2026-08-24 14:57:00 +08:00
Yichen Jiang 9a6845828a Merge remote-tracking branch 'origin/master' into worktree/fix-system-prompt-order 2026-08-24 14:54:55 +08:00
creatixchu 558f08780c refactor(attachment): 分离宿主位置与模型访问路径 2026-08-24 14:51:03 +08:00
Chinesezjc e0249fba1c Merge pull request #3000 from deepseek-harness/revert-2926-worktree/optimize-windows-ci-20260822
Revert "perf(ci): shorten native Windows coverage critical path"
2026-08-24 14:40:33 +08:00
Chinesezjc cd6941d5d7 Revert "perf(ci): shorten native Windows coverage critical path" 2026-08-24 14:39:56 +08:00
Dudu-0223 470af0a404 fix(web): preserve preview fetch composition 2026-08-24 14:18:15 +08:00
Yichen Jiang 25428f8e08 fix(system-prompt): preserve downstream section order 2026-08-24 14:12:36 +08:00
Dudu-0223 14e4d3f078 docs(web): document shipped fetch policy 2026-08-24 13:40:08 +08:00
Yichen Jiang fdf60301f2 fix(system-prompt): stabilize workflow section order 2026-08-24 13:38:34 +08:00
Dudu-0223 9fbcea099b feat(web): require one-shot fetch approval 2026-08-24 13:38:06 +08:00
_Kerman 9deabe717f Merge remote-tracking branch 'origin/master' into xtr/durable-inbox-recovery 2026-08-24 13:17:57 +08:00
_Kerman 015d7e0752 docs(session-projection): keep registry contract unchanged 2026-08-24 13:14:21 +08:00
creatixchu 7f4cf99eeb 修正图片路径访问与只读存储 2026-08-24 13:11:04 +08:00
Dudu-0223 2fbe199a1c test(web): permit loopback spill fixture 2026-08-24 12:35:32 +08:00
creatixchu bd4e4173e7 feat(attachment): expose model-readable image paths 2026-08-24 12:08:26 +08:00
Yichen Jiang 6f17d10102 test(web): finish the textarea-locator sweep after the architecture merge
preview-boot's hero wait was master's new textarea:enabled locator (the
conv refactor predates the Lexical composer); migrate it to the
data-composer-input surface like every other lane. Drop the unnecessary
DOMRect assertion oxlint flagged on the new Range stub.
2026-08-24 12:06:48 +08:00
Dudu-0223 c406560452 test(web): permit loopback integration fixture 2026-08-24 12:05:17 +08:00
creatixchu 6434b894c2 chore(attachment): start issue-2885 image codec work 2026-08-24 12:02:38 +08:00
Dudu-0223 9d5fa7a593 test(web): snapshot blocked loopback fetch 2026-08-24 11:57:27 +08:00
Dudu-0223 b2219bba63 fix(web): block non-public fetch destinations 2026-08-24 11:47:08 +08:00
Yichen Jiang 04caa1248d test(client): close the merged-architecture coverage and jsdom gaps
- user-text.tsx enters ui-primitives' per-file 100% gate: replace three
  regex-guaranteed impossible ?? fallbacks with asserted captures, make
  the precedence sort a branch-free rank comparator, and pin the nested
  recall-label ordering and the no-basename quoted-path fallback with
  tests (100% statements/branches/functions locally).
- assembled-boot stubs Range.prototype.getBoundingClientRect: jsdom has
  no Range geometry, and Lexical's selection reveal now reaches it in the
  built-graph lane after the architecture merge (the unhandled TypeError
  behind command-image-envelope and preview-boot).
2026-08-24 11:39:34 +08:00
lsdsjy e06625d202 fix(web): switch running drafts to Send 2026-08-24 11:37:48 +08:00
Yichen Jiang 5f94875a3d Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-24 11:28:59 +08:00
Turtle 528815dd1e Merge pull request #2860 from deepseek-harness/turtle/warn-torn-jsonl-recovery
fix(jsonl): warn when repairing torn tails
2026-08-24 11:15:05 +08:00