Commit Graph

7784 Commits

Author SHA1 Message Date
Yichen Jiang
3b1b912518 docs(settings): third-review contracts across READMEs, catalogs, and the write-path integrity note
The seam README states the JSON-shaped write boundary, watch-disposer
quiescence, async listener containment, and the drained teardown; the
provider README rewrites Behavior around the operation chain,
read-modify-write, writer lock, ready reconcile, and leaf-level YAML
diffs, and updates Known Limitations to the residual guarantees.
A new Agent Note records the round's decisions and supersedes the
original note's deferred-lockfile alternative (cross-linked in place).
Chinese counterparts updated pair-by-pair (three briefed minimal
updates, one whole-document translation); type-equiv, config, cordis,
and module-graph catalogs re-recorded.
2026-07-30 14:09:04 +08:00
Hypatia May
39ebd8f745 fix(session): close the review gaps the boundary opened
- `SessionSummary.updatedAt`'s wire doc still said "Persisted file mtime",
  which stopped being true for attached sessions.
- The core invariant let `session/inherited` fall through the merge-extensible
  default. It is core-owned, so it gets an explicit case; an unbalanced seed
  legally places it inside an open turn, which the relation permits.
- The Agent Note claimed the boundary reaches disk via `live.pending`/
  `scheduleDrain`. Verified false: the constructor append precedes `enter()`,
  so it never publishes on `session/event` and rides the creation seed instead.
  Attaching is therefore a write where none happened before — recorded, since
  only `load()` stays a pure read.
- The deferred-index proposal asserted this change documented the cold-mtime
  skew on `dsh-host-apiproxy`. It did not; the README entry now exists.
- `firstLiveSeq`'s firehose gap runs through its own seq, not below it.
- The boundary is not always at `firstLiveSeq` (the idempotence guard), so
  consumers scan for the last one.
- `lastActivityTime` excludes by type, so a pickup time still leaks onto a
  synthetic closer when a boundary ends an open turn. Documented.
- Pin the fork claim end-to-end: a child inherits a still-running parent's
  open bracket below its own boundary, while the parent has none. Fails if the
  write moves back to the load path.
- Fix the telemetry title that contradicted its own assertions.

The `/status` call site cannot be pinned the way the other two are: the
command appends its own `command/run` before rendering, so the boundary is
never the log tail there. Its fixture now at least renders over a
boundary-bearing log.
2026-07-30 13:59:08 +08:00
Yichen Jiang
85a3a158dd fix(settings-local): one operation chain, read-modify-write under a writer lock, and diff-shaped YAML edits
Review round three found the provider's write path could destroy state it
never observed:

- Watcher reloads and document writes ran on two independent promise
  chains, and a write rendered the whole next document from the cached
  text. An external edit still inside the debounce window (or missed
  outright) was overwritten, and the follow-up reload no-oped because the
  post-rename content matched the cache — the edit vanished without a
  trace. Reloads and writes now share one operation chain, and every write
  starts by reconciling the on-disk text into the seam before rendering,
  so unobserved sibling sections survive and publish first. An unparsable
  on-disk document fails the write loud instead of being overwritten.
- The initial load raced the watcher's own setup: a change written between
  that read and the watcher becoming active never fired an event. The
  watcher's ready signal now queues one reconcile, closing the gap.
- Two processes sharing a harness home rendered from independent caches,
  last writer winning. Writes now hold a wx-created <file>.lock sibling
  around the read-render-rename cycle with bounded backoff, a crashed-
  holder stale takeover, and a deadline failure; readers stay lock-free
  because the rename commit is atomic.
- renderYaml replaced the whole namespace node, dropping every comment
  inside the section. The next section now lands as a leaf-level diff
  (set changed values, delete removed keys), so comments, anchors, and
  formatting survive on every untouched node and on the key of every
  changed pair; arrays still replace wholesale when unequal.
2026-07-30 13:39:22 +08:00
Yichen Jiang
bdc6d95d56 fix(settings): close third-review watcher-lifecycle and write-boundary gaps
Review round three found four seam defects:

- A watch() disposer only removed the observer from the set; an invocation
  already chained onto the watcher tail still ran after disposal. Watchers
  now carry an active flag checked when a queued invocation would start,
  and the service dispose drain awaits started invocations (pendingTails)
  beside the write queues, so disposal is quiescent.
- The settings/updated manual fan-out caught only synchronous throws; an
  async listener rejection escaped as an unhandled rejection. Thenable
  returns are now contained through the shared listener diagnostic, and
  the event contract documents that the INVARIANT rethrow serves
  synchronous listeners only.
- structuredClone admitted Dates, Maps, BigInts, and cycles that YAML/JSON
  storage silently distorts on reload (a Date lands as a timestamp string,
  a Map as a plain map, a BigInt as a number). The write snapshot is now a
  single-pass cloneJsonShaped walk that rejects non-JSON values with their
  path before anything persists.
- mergeLayers' per-entry undefined guard became dead code once the clone
  strips undefined entries at the boundary; removed, with the sparse-patch
  contract restated at its enforcement point.
2026-07-30 13:29:52 +08:00
imccyu
1db976210f Merge pull request #928 from deepseek-harness/worktree/short-default-labels
fix(ui): shorten default reasoning labels
2026-07-30 13:22:05 +08:00
Yichen Jiang
b6bb24bfa1 docs: raise AGENTS.md and packages/README.md budget ceilings after the master merge
Both files fit their ceilings on each parent; the merge union of this
branch's settings rows with master's typert row and source-launch rewrite
overflows by 6 and 2 words. Every added row is a fixed-format layout or
package-table entry with nothing to relocate, so the ceilings move to the
union size.
2026-07-30 13:20:47 +08:00
imccyu
291fe1e823 test(web): refresh composer stats expected outputs 2026-07-30 13:15:57 +08:00
Yichen Jiang
c50aaea5e9 Merge remote-tracking branch 'origin/master' into worktree-config-settings-seam
# Conflicts:
#	docs/cordis-catalog/events.md
#	docs/core-data-structures/core.i18n.yaml
#	docs/event-producer-consumer.md
#	packages/README.i18n.yaml
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	scripts/doc-budgets.manifest.json
2026-07-30 13:13:59 +08:00
Yichen Jiang
42d0f3c7ba feat(web): route onboarding to Models settings 2026-07-30 13:11:07 +08:00
imccyu
4869e0bbfc Merge branch 'master' into worktree-fetest 2026-07-30 13:09:53 +08:00
imccyu
1b84126f70 Merge branch 'master' into worktree/short-default-labels 2026-07-30 13:08:34 +08:00
imccyu
c66cf04ebf Merge pull request #937 from deepseek-harness/fix/input-ui
Web composer stats detail row and input-zone polish
2026-07-30 13:08:25 +08:00
imccyu
20cac781a2 Merge branch 'master' into worktree-fetest 2026-07-30 12:56:54 +08:00
imccyu
432a64ef2f Merge branch 'master' into worktree/short-default-labels 2026-07-30 12:56:11 +08:00
imccyu
01324f9167 Merge branch 'master' into fix/input-ui 2026-07-30 12:55:57 +08:00
creatixchu
3ba25e25c0 fix(directory-picker-browse): bot round 1 — pill cascade+corner, slow-scan close reset, asymmetry+calibration recorded
- .loadingFloat moved after the .status/.error block (its padding was
  losing the same-specificity race) and re-anchored bottom-right: the
  truncated/error rows own the bottom left and keep rendering through a
  scan, so the pill can never cover them; confirmCreate's relist now
  clears the stale failure text like every other scan launch.
- The close edge resets loading, so the slow-scan effect disarms while
  hidden and a reopened dialog waits out a fresh silence window
  (regression test added).
- The truncated note's survival through a scan is now asserted in the
  slow-scan test; the wait-bound test moved to fake timers with the
  200ms bound explicit.
- select()'s exemption from the one-frame rule and the constants' local
  calibration premise are recorded in JSDoc and the capability-seam
  Agent Note; the themed-scrollbars note's rebinding enumeration is
  replaced by a pointer to the mechanical gate (it had drifted twice).
  Both pairs re-recorded.
2026-07-30 12:53:07 +08:00
Yichen Jiang
7fc1b5a777 Merge latest worktree-llm-web-config 2026-07-30 12:52:27 +08:00
Yichen Jiang
8d24565063 test(web): follow the updated Models key form 2026-07-30 12:48:46 +08:00
Yichen Jiang
596334254c docs: align the config-page docs and terminology with the single-key editor rounds 2026-07-30 12:45:22 +08:00
Yichen Jiang
a9d2d2888a Merge updated Models form from worktree-llm-web-config 2026-07-30 12:44:16 +08:00
Yichen Jiang
819a7a6751 docs: record DeepSeek onboarding credential flow 2026-07-30 12:41:32 +08:00
Yichen Jiang
0b689e0d2c test(web): cover keyless DeepSeek onboarding 2026-07-30 12:41:22 +08:00
Yichen Jiang
9182db00ef feat(web): configure DeepSeek during onboarding 2026-07-30 12:41:09 +08:00
Yichen Jiang
16f1cfe04e feat(ui-models): pin the deepseek endpoint placeholder, add pi-ai base URL, drop the fold hint 2026-07-30 12:39:56 +08:00
Ziya
818a504901 Merge pull request #831 from deepseek-harness/fix/workspace-instruction-frame-metadata
fix(workspace-context): escape instruction frame metadata
2026-07-30 00:35:48 -04:00
kingwl
7e91ecb2d9 Merge remote-tracking branch 'origin/master' into codex/responsive-queue-panel 2026-07-30 12:26:47 +08:00
kingwl
751b970997 fix(web): align queue panel with responsive composer 2026-07-30 12:25:48 +08:00
Tianyi Cui
cea5e868ff Merge remote-tracking branch 'origin/master' into worktree/retarget-pr831-20260729 2026-07-30 12:21:14 +08:00
imccyu
9cb9a3e767 Merge branch 'master' into worktree-fetest 2026-07-30 12:20:27 +08:00
imccyu
b44318b03d Merge branch 'master' into fix/input-ui 2026-07-30 12:20:01 +08:00
Tianyi Cui
e29a4d7083 Merge pull request #844 from deepseek-harness/codex/experimental-plugin-group-note
docs: add experimental and internal package group
2026-07-30 12:18:56 +08:00
Yichen Jiang
d1bfdbff84 feat(ui-models)!: single-key hand-written provider editors with derived credential references
The Models page drops the generic schema renderer and the visible
environment-variable field: each editor is a curated per-family card whose
primary input is one write-only API key stored under a derived
<ROUTE>_API_KEY reference (recorded as apiKeyEnv in the pi-ai profile), an
unkeyed whole-section provider opens as its setup card, and the collapsed
customized-settings fold carries baseURL/reasoningEffort (deepseek) or
reasoning (pi-ai). dsh-client-schema-form reduces to the schema/draft model
layer (no React).
2026-07-30 12:17:56 +08:00
Tianyi Cui
d37b192aa9 Merge branch 'master' into fix/workspace-instruction-frame-metadata 2026-07-30 12:16:41 +08:00
creatixchu
6ee2752cca fix(directory-picker-browse): rebind the scrollbar elevation pair on the browser card
The loading pill's layer-2 background made the sheet an
elevated-surface painter, and the ui-theme scrollbar invariant rightly
flagged what was already latent: the dialog's columns scroll on an l2
card while the thumbs rendered in the base-surface pair. Rebind the
indirection on the card rule so it inherits to the scrolling columns.
2026-07-30 12:09:45 +08:00
Tianyi Cui
3ecd4a569a test(skill-local): cover root unlink rewatch 2026-07-30 12:02:21 +08:00
Hypatia May
a00786362f refactor(session): drop the unused predicate helper and tighten the docs
`isInheritedSeq` had no production caller — only its own tests — so it was
a public core export shaped by nothing. A bracket owner reads the boundary
positionally; the helper belongs with the compaction seam, where a real
consumer decides its signature.

Also condense the `session/inherited` and `lastActivityTime` docs.
2026-07-30 12:01:45 +08:00
imccyu
9035b1b474 docs(testing): record browser gate timing 2026-07-30 12:01:31 +08:00
Turtle
5a490553bc Merge remote-tracking branch 'origin/master' into feature/shared-cli-config-foundation
# Conflicts:
#	docs/event-producer-consumer.md
#	packages/host/apiproxy/README.i18n.yaml
#	tsconfig.base.json
2026-07-30 12:00:15 +08:00
imccyu
6e99027917 Merge remote-tracking branch 'origin/master' into mergebot/pr937
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/src/client/queue/QueueDock.module.css
2026-07-30 11:59:59 +08:00
Tianyi Cui
3f195f1dd1 Merge remote-tracking branch 'origin/master' into codex/experimental-plugin-group-note 2026-07-30 11:57:55 +08:00
imccyu
23fb779f7f test(web): refresh queue expected outputs 2026-07-30 11:57:00 +08:00
imccyu
876d1947fe test(web): pin queue replay locale 2026-07-30 11:56:54 +08:00
imccyu
b523a04af8 Merge remote-tracking branch 'origin/master' into worktree-fetest 2026-07-30 11:51:09 +08:00
creatixchu
7b22a3b454 feat(directory-picker-browse): quiet navigation — one-frame landings and a slow-scan loading pill
Navigations keep the previous view rendering while scanning: target and
parent legs land as one two-pane frame when the parent leg settles within
a 200ms wait bound (past it the target lands alone and the late leg
upgrades in place; Escape inside the landing window withdraws the
navigation). The loading indicator floats over the content on the card
background and appears only once a scan outlives a 300ms silence window,
so navigation never shifts the columns or flashes an intermediate frame.
The truncated note now describes the on-screen panes instead of hiding
during scans.
2026-07-30 11:50:16 +08:00
imccyu
e80d7bce17 test(web): refresh message action expected outputs 2026-07-30 11:50:12 +08:00
imccyu
1642b8f7d2 Merge pull request #925 from deepseek-harness/codex/web-queue-actions
feat(agent): add addressable queue operations
2026-07-30 11:47:21 +08:00
Tianyi Cui
c0474d5289 Merge branch 'master' into codex/experimental-plugin-group-note 2026-07-30 11:46:04 +08:00
Tianyi Cui
ecb43469af Merge branch 'master' into fix/workspace-instruction-frame-metadata 2026-07-30 11:45:00 +08:00
imccyu
02a9d4113e Merge remote-tracking branch 'origin/master' into worktree-fetest 2026-07-30 11:40:34 +08:00
imccyu
2fa26cd140 test(web): refresh localized expected outputs 2026-07-30 11:39:40 +08:00