Commit graph

14554 commits

Author SHA1 Message Date
Yichen Jiang
db5417ff6f fix(session-controller): keep refused jumps from parking a stale target
loadThrough now assigns its low-water target only when it owns the loop
(retargeting stays inside the running-jump branch): a call refused while
a plain load-earlier pull holds the pager no longer leaves jumpTargetSeq
behind to drag a later jump all the way to the head. The loop also
carries the doOpen stale-pass guard so a mid-flight resync stops it
instead of paging the new stream generation toward the old target.
2026-08-31 19:46:55 +08:00
Yichen Jiang
7c58a95ebb test(session-turn-outline): cover fold edges and deflake settle assertion
Edge-branch coverage for the preview reading bound, repeated and empty
drafts, draftless turn ends, orphan-draft clearing, and same-response
recommits (the CI per-file gate exercises them); the jump-settle spec
now asserts only the busy lifecycle after settlement — jsdom's zero
geometry made the rAF active-turn resync timing-dependent under
coverage instrumentation, and the landing position contract lives in
the browser e2e.
2026-08-31 19:46:55 +08:00
Yichen Jiang
0e63841189 feat(session-turn-outline): settled-response previews at card budgets
Outline entries gain the turn's final text-bearing assistant preview:
each assistant message overwrites a state draft and turn/end commits
the survivor, matching the loaded rail's findLast semantic; the bare-
array wire keeps its identity across draft changes, so pushes stay at
three per turn. Preview budgets shrink to the rail card's clamps — one
50-character prompt line, up to three 120-character response lines,
ellipsis on clip — on loaded and unloaded turns alike (stateVersion 2
discards v1 cache rows).
2026-08-31 19:46:55 +08:00
Yichen Jiang
ceadd90e71 feat(session-projection): identity-gated change feed
The feed previously fired on every changed state reference of a
client-visible unit; it now also compares the raw view output against
the last delivered one and stays quiet when Object.is-identical, so a
unit can buffer working fields in state behind an identity-stable
projection. Units whose views build fresh objects per call are
unaffected.
2026-08-31 19:46:54 +08:00
Yichen Jiang
62f707bb1d fix(ui-chat): release bottom ownership when a jump starts
Clicking an unloaded rail mark from the pinned tail raced the pinned
scroll snap: the first prepend's compensation fires a non-reader scroll
delivery, the snap called toBottom, and toBottom cancels a pending jump
— so the jump silently stayed at the tail while history loaded. The
click now drops atBottom itself (jumping into history is leaving the
live tail), pinned by a jsdom regression and re-verified live: a
118-turn session lands on turn 1 in ~250ms from click.
2026-08-31 19:46:54 +08:00
Yichen Jiang
422b603874 docs: turn outline rail contracts and agent note
READMEs record the rail's outline merge and the loadThrough paging
verb in both languages; the feature Agent Note owns the decision,
alternatives (sparse windows, minSeq wire bound, outline RPC, height
estimation), and coverage map. Regenerates the client/API catalogs the
widened faces feed.
2026-08-31 19:46:54 +08:00
Yichen Jiang
3a834fe6c9 feat(ui-chat): settle jump landings after paging completes
A mid-paging landing keeps the jump armed with the target row as its
paging anchor, so later chunks and the load-earlier button's unmount
cannot drift the landing; the loader's completion runs one final
correction unless the reader already scrolled off the target. Adds the
browser contract: full outline ladder, keyboard jump on an unloaded
mark, landing geometry, and rail fades.
2026-08-31 19:46:53 +08:00
Yichen Jiang
6af1ee49b1 feat(ui-chat): scrollable fixed-pitch turn rail
Marks keep a fixed 10px pitch instead of compressing into the frame:
overflow scrolls inside a hidden-scrollbar scroller with gradient fades
over each still-scrollable end, the preview compensates the rail scroll,
and the active mark keeps itself centred while the pointer is off the
rail. Pointer-to-mark mapping now works in ladder coordinates.
2026-08-31 19:46:53 +08:00
Yichen Jiang
b3064cca77 feat(ui-chat): full-session turn rail with load-and-jump
The rail now merges the turnOutline projection with loaded-window items
(view-layer only; loaded wins, outline fills mid-turn prompt previews),
renders unloaded turns as dimmer marks, and clicking one holds the
reader's place, pages history through the turn's seq, and lands on its
row after the commit — no height estimation. Settlement repages once
per head movement, then falls back to the nearest rendered turn.
2026-08-31 19:46:53 +08:00
Yichen Jiang
218bb7f645 feat(session-controller): loadThrough deep history paging
Session.loadThrough(seq) loops the existing prepend pager (200-message
pages) until the window covers the target seq, with a shared low-water
retarget for repeated calls, a no-progress guard against empty pages
still claiming history, and loadOlder's fail-soft error posture. Busy
state rides the existing loadingOlder snapshot bit.
2026-08-31 19:46:53 +08:00
Yichen Jiang
7e2eacb1fe feat(session-turn-outline): whole-log turn outline projection
New turnOutline projection unit serving every started turn's number,
turn/start seq, and bounded first-prompt preview through the
session-projection seam, mounted in the web-app bundle for the chat
turn rail. Entries stay strictly increasing; previews mirror the rail's
loaded-turn preview budget.
2026-08-31 19:46:53 +08:00
imccyu
eca3bda903 Merge pull request #3374 from deepseek-harness/hl-perf
fix(web): make streaming code fences incremental
2026-08-31 18:49:03 +08:00
07akioni
d8e2ac5052 fix(web): retain completed streaming fence lines 2026-08-31 18:11:32 +08:00
Ziya
2480bdf27a feat(web): clarify Workspace Write Chinese label (#3345)
Co-authored-by: ZiyaZhang <199893125+ZiyaZhang@users.noreply.github.com>
2026-08-31 09:42:16 +00:00
07akioni
1dd3e60f50 fix(web): make streaming code fences incremental 2026-08-31 17:26:04 +08:00
Turtle
713ae6c29b Merge pull request #3360 from deepseek-harness/turtle/pr-open-start-date
feat(issue-management): initialize Issue start dates on PR open
2026-08-31 16:48:47 +08:00
imccyu
60a46b9f5d Merge pull request #3331 from deepseek-harness/worktree-chatctxmemory
perf(web): reduce retained conversation state
2026-08-31 16:41:11 +08:00
Chinesezjc
8fb9bc29e9 Merge branch 'master' into turtle/pr-open-start-date 2026-08-31 16:27:41 +08:00
Chinesezjc
c5a94f11df Merge pull request #3354 from deepseek-harness/fix/windows-coverage-flaky-test-budgets
test: stabilize the Windows coverage lane against timing flakes
2026-08-31 16:11:55 +08:00
Chinesezjc
8ace43a8b1 Merge pull request #3364 from deepseek-harness/fix/notices-serial-windows-timeout
fix(ci): serial-windows notices timeout and generator store-scan cost
2026-08-31 16:10:47 +08:00
Chinesezjc
4f877cdab1 Merge branch 'master' into fix/notices-serial-windows-timeout 2026-08-31 15:55:59 +08:00
imccyu
d7abd0a01e fix(web): activate selected view for blank sessions
fix(web): activate selected views before blank gating
2026-08-31 15:45:26 +08:00
Chinesezjc
a00c9a062c Merge branch 'master' into fix/windows-coverage-flaky-test-budgets 2026-08-31 15:45:19 +08:00
imccyu
4b21065dbe refactor(client): share conversation context initialization 2026-08-31 15:44:23 +08:00
imccyu
4203317e18 perf(client): materialize conversation targets on demand 2026-08-31 15:44:23 +08:00
imccyu
354bf44923 fix: ci 2026-08-31 15:44:23 +08:00
imccyu
b4527bedc7 fix(client): pin inbox claim semantics 2026-08-31 15:44:22 +08:00
imccyu
61da6fbbe5 perf(web): defer tool body formatting until expansion 2026-08-31 15:44:22 +08:00
imccyu
8478de9b0e perf(client): linearize inbox projection state 2026-08-31 15:44:22 +08:00
Chinesezjc
a074e6131f fix(ci): serial-windows notices timeout and generator store-scan cost
render() loaded the workspace manifests once per external dependency
name through workspaceLinkedManifest, an O(names x manifests) file
read on the cold path; on the loaded self-hosted Windows host with
coverage instrumentation the freshness spec crossed Vitest's default
5000ms budget and failed the serial-windows standby gate four times in
a week. Load the manifests once in render() and thread the map through
the collectors instead.

The serial-windows lane also ran the coverage inventory at the strictest
budget of any lane: add DSH_COVERAGE_TEST_TIMEOUT_MS=90000 to match the
pull-request windows-coverage lane, pinned by ci-workflow.spec.ts.
2026-08-31 15:33:16 +08:00
Xu Hanxiang
dc3984204d Merge pull request #3288 from deepseek-harness/issue-3135-tab-completion
fix(client): complete highlighted commands with Tab
2026-08-31 15:11:36 +08:00
Chinesezjc
65da4cfb28 Merge pull request #3352 from deepseek-harness/fix/windows-coverage-align-linux
fix(ci): windows coverage runs zero-build like the linux lane
2026-08-31 14:54:27 +08:00
mektpoy
ff21366916 fix(client): complete highlighted commands with Tab 2026-08-31 14:49:35 +08:00
Turtle
4df85c85ff feat(issue-management): initialize Issue start dates on PR open 2026-08-31 14:44:20 +08:00
Chinesezjc
8c540fd9fd Merge origin/master (revert of PR 2573)
Master reverted PR 2573, deleting the case-insensitive-path-round-trips
note that carried the dead link, so take the deletion and drop the note
repair from this branch; the jsonl.spec.ts change merges cleanly.
2026-08-31 14:39:37 +08:00
Tianyi Cui
cf2d0986cf Merge pull request #3361 from deepseek-harness/revert-2573-fix/windows-path-case-test-fragility
Revert "test(session): resolve one relative root on both sides of the jsonl round-trip"
2026-08-31 14:33:01 +08:00
Tianyi Cui
1f3101982b Revert "test(session): resolve one relative root on both sides of the jsonl round-trip" 2026-08-31 14:32:48 +08:00
Chinesezjc
aa54467476 Merge origin/master and repair the dead note link from PR 2573
Bring in master through cf6750b10 (including the gate-runner fail-fast
change) and drop the stale fixture reference in the
case-insensitive-path-round-trips note: PR 2573 linked a fixture that PR
3128 had already removed, so every pull request's markdown-links gate
failed on master's own note. The claim stands without naming the deleted
file; verify-md-links now resolves all 2199 files locally.
2026-08-31 14:24:51 +08:00
Chinesezjc
faeb4e2218 Merge remote-tracking branch 'origin/master' into fix/windows-coverage-align-linux 2026-08-31 14:23:32 +08:00
Chinesezjc
456dcdd8fb Merge pull request #3211 from deepseek-harness/ci/gate-fail-fast
ci: fail fast at the first blocking gate failure
2026-08-31 14:14:22 +08:00
Chinesezjc
43cfe6a26e Merge origin/master into fix/windows-coverage-align-linux
Resolve the 08-08 note conflict (keep the zero-build rewrite, drop the
SQLite busy-journal sentence removed with the SQLite backend) and drop the
now-removed session-persistence-sqlite built-package suite from the
lib-consuming self-skip inventory in the ci.yml comment, the
ci-workflow.spec.ts comment, and the partitioned-coverage note; the
inventory is now image-loadable, transform-corpus, and client-bundle.
2026-08-31 14:13:51 +08:00
Tianyi Cui
2491a9d1d9 Merge pull request #2573 from deepseek-harness/fix/windows-path-case-test-fragility
test(session): resolve one relative root on both sides of the jsonl round-trip
2026-08-31 14:13:23 +08:00
Tianyi Cui
817c67d799 Merge pull request #3339 from deepseek-harness/worktree/session-format-01-jsonl-only
refactor(session)!: remove SQLite persistence backend
2026-08-31 13:58:04 +08:00
Tianyi Cui
4553c9d957 refactor(session)!: remove SQLite persistence backend 2026-08-31 13:23:07 +08:00
Turtle
c68676d3c9 Merge pull request #3128 from deepseek-harness/turtle/remove-agent-spine-demo
refactor(bundle): remove the agent spine demo
2026-08-31 13:17:45 +08:00
Chinesezjc
0868e5d128 test: make windows coverage timing assertions deterministic
cache.spec.ts polled fire-and-forget fail-soft writes with a fixed 40ms
settle(); contended runners drain the write after the window, so the
warn/row assertions flaked. Poll the observable outcome with vi.waitFor
(5s) instead, matching the file's existing cold-read write-back pattern.

The sdk-client and subagent-dsh-sdk dispose-ladder tests passed tight
confirmation budgets (disposeGraceMs 100-300ms) to real children; on a
contended runner the SIGKILL exit edge can arrive after the budget and
close() misreports a slow reap as failure. Use the product-default
budgets (disposeGraceMs 3000ms) for the real-child cases; the fake-child
negative cases in dispose.spec.ts keep the 10ms bound.
2026-08-31 12:42:01 +08:00
Chinesezjc
a9bc7b7056 fix(ci): add client-bundle to the zero-build self-skip inventory
client-bundle.client.spec.ts reads packages/client/ui-trajectory/lib/client.js
and skips all three cases when the bundle is absent, so it is a fourth
lib-consuming suite in the instrumented corpus. List it beside built-package
in the ci.yml comment, the ci-workflow.spec.ts comment, and the
partitioned-coverage note (both languages).
2026-08-31 12:13:43 +08:00
Chinesezjc
16853e1f77 fix(webworker-packer): update image-loadable JSDoc for zero-build coverage
Both coverage lanes now run before any build, so the post-build
uninstrumented gate wording applies only to the serial-windows complete
reference; preview builds still exercise the suite against real
artifacts.
2026-08-31 12:03:47 +08:00
Chinesezjc
2dd8b3eac3 fix(ci): harden the zero-build coverage assertion and list all skip suites
Strengthen the ci-workflow.spec.ts guard to match any 'pnpm run build'
spelling (corepack prefix, multi-line run blocks) instead of one exact
string, and complete the lib-consuming self-skip inventory with the
webworker-runtime transform-corpus import sweep alongside the packer
image assertions and the built-package check. Update the ci.yml comment
and the partitioned-coverage note (both languages) to match, and drop the
stale 'post-build' phase wording and the native-Windows build-wait
rationale from the coverage-exempt comment.
2026-08-31 12:00:05 +08:00
Chinesezjc
ec6a98452d Merge branch 'master' into ci/gate-fail-fast 2026-08-31 11:56:44 +08:00