Commit Graph

4558 Commits

Author SHA1 Message Date
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
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
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 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
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 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
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 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
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
Hypatia May b341155652 feat(session): project the inherited-history boundary into the log
A plugin owning a standalone open/close bracket cannot tell a dead marker
from a live one: an unmatched `compact/start` reads identically whether the
previous writer died mid-compaction or a compaction is running now.
`Session.firstLiveSeq` already holds that answer exactly, but only in memory.

Append the log-only `session/inherited` event at that seq from the seeded
constructor — the single waist all six seeded-start paths pass through
(resume, configured startup on a persisted id, `sessions.fork()`, a subagent
fork child, `adopt()`'s live prefix, and a bare seeded `create`). Read it
through the new `isInheritedSeq(events, seq)`.

The constructor placement means persistence needs no changes: the marker is
already in `events` when a backend captures the creation seed, so it rides
the ordinary seed path with no load-time write. It also covers fork, where
the inherited bracket's owner may still be running — the case a
persistence-layer boundary could not reach.

Activity ordering excludes the boundary through `lastActivityTime()`, since
lazy resume makes browsing a pickup and the three call sites would otherwise
float every opened session to the top of a picker or list.
2026-07-30 11:39:26 +08:00
kingwl ad1bb84425 Merge remote-tracking branch 'origin/master' into codex/web-queue-actions
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-30 11:38:54 +08:00
imccyu a9813a2801 Merge branch 'master' into codex/web-queue-actions 2026-07-30 11:20:57 +08:00
imccyu aae1b48535 Merge remote-tracking branch 'origin/master' into worktree-fetest 2026-07-30 11:17:03 +08:00
imccyu 6303b22487 ci: run web replay on master linux 2026-07-30 11:16:37 +08:00
07akioni b92c6bcc66 Merge branch 'master' into fix/ui-action-display 2026-07-30 11:15:35 +08:00
Turtle cd100a81f1 fix(cli): harden launcher lifecycle 2026-07-30 11:14:18 +08:00
imccyu 60620ec36c Green the jsdom lane for the composer-seat ResizeObserver and new StatsLine format
The seat's height publisher needs a ResizeObserver stub in every spec that
renders ConversationRoot (jsdom has none), and the two branch-tail StatsLine
assertions move to the grouped detail-row output.
2026-07-30 11:09:03 +08:00
Tianyi Cui c38a7c3a89 Merge branch 'master' into fix/hook-matcher-validation 2026-07-30 10:57:24 +08:00
imccyu b94df7348f Merge branch 'master' into codex/web-queue-actions 2026-07-30 10:50:34 +08:00
Yichen Jiang fb4b8f3973 Merge remote-tracking branch 'origin/master' into worktree/short-default-labels
# Conflicts:
#	packages/client/ui-model/src/client/ModelSelect.tsx
#	packages/client/ui-model/tests/model-select.spec.tsx
2026-07-30 10:47:35 +08:00
Turtle 59bd220215 docs: repair links to consolidated CLI 2026-07-30 10:45:08 +08:00
Turtle 6b57be3371 docs: keep host package unchanged 2026-07-30 10:39:35 +08:00
Turtle f2746a7115 docs: keep todo package unchanged 2026-07-30 10:38:54 +08:00
Turtle c086de2074 fix(docs): align catalogs with consolidated CLI 2026-07-30 10:34:21 +08:00
Turtle 83360c3dca fix(cli): default session root in shipped config 2026-07-30 10:24:04 +08:00
imccyu 4b4f7752c1 ci: gate web browser snapshots 2026-07-30 10:23:05 +08:00
Yif 04f6dfdc29 Web composer stats detail row and input-zone polish
Stats line moves into the InputBar's new footer slot (sharing the card's
width column) and expands to the design's grouped detail row: turns/steps,
LLM and tool wall time, cache hit, and input/output token split, all
derived client-side from the snapshot. The composer stack owns one 8px
rhythm, the seat fades the transcript through a fixed 36px gradient band,
back-to-bottom follows a live --dsh-composer-height, and goal/todo strips
share one 752px tip-fill column.
2026-07-30 10:22:44 +08:00
Turtle 5111a292b4 refactor: drop unrelated ACP snapshot changes 2026-07-30 10:17:51 +08:00
Turtle 545878c6a7 docs: restore unrelated todo READMEs 2026-07-30 10:15:57 +08:00
Turtle 5dbcedfbba Merge origin/master into feature/shared-cli-config-foundation 2026-07-30 10:11:38 +08:00
Turtle 9e9653202c docs: restore unrelated translated READMEs 2026-07-30 10:04:23 +08:00
Turtle c3b253db28 docs: drop unrelated README changes 2026-07-30 10:02:36 +08:00
creatixchu 3d9df6c9c9 Merge remote-tracking branch 'origin/master' into feat/dir-selector-adaptive-default
# Conflicts:
#	apps/web/tests/workspace-flow.snapshot.ts
2026-07-30 09:51:26 +08:00
creatixchu 0d5cf7ce4e Merge origin/master (oxlint migration, webtest migration)
Conflict: apps/web/tests/workspace-flow.snapshot.ts was deleted on
master (#921 sinks assembled-app journeys to package-level benches)
and modified here (show-hidden/prefix-filter and crumb-back lanes).
Resolved by taking the deletion: the same behaviors are asserted at
package level in directory-picker-browse's directory-browser.spec.tsx
and client-flow.spec.tsx, which is the post-migration home for them.
2026-07-30 09:32:55 +08:00
creatixchu b46dcb16cb revert: restore the reviewer-approved tree (97a192d7b)
ZiyaZhang approved 97a192d7b; the subsequent bot-review rounds (7-24)
landed after that approval and were not requested by a human reviewer.
This commit restores the approved tree verbatim as a forward commit
(pushed history stays intact). git diff 97a192d7b is empty.
2026-07-30 09:22:16 +08:00
Hypatia May 6e5a155868 Merge branch 'master' into fix/human-transcript-projection
Conflicts, all in files this branch and master both touched:

- `chat/helpers.ts` — kept both sides. Master replaced the inline env
  filter in `gitBranch` with `scrubbedParentEnv()`; this branch added the
  surface-marker and compaction-source imports.
- `docs/module-graph.md` — regenerated. Both sides added a `tui` edge
  (master `subprocess`, this branch `compact`); the generated row now
  carries both.
- Three `.i18n.yaml` pairing records — re-recorded from the merged files.
  Blob hashes cannot be hand-merged, and both sides' prose survives on
  each side of every pair.

`docs/cordis-catalog/services.md` also regenerated for shifted source
lines and master's new `sessionTitle.rename` entry.
2026-07-30 08:53:26 +08:00