Commit Graph
6049 Commits
Author SHA1 Message Date
kingwl 63183b2f5d Merge remote-tracking branch 'origin/master' into feature/subagent-policy-inheritance
# Conflicts:
#	docs/module-graph.md
2026-07-27 19:46:19 +08:00
Chinesezjc 0701245007 Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait 2026-07-27 19:44:10 +08:00
ZiyaZhang a5239b0f64 test(gui): cover native workspace picker branches 2026-07-27 04:37:24 -07:00
Turtle 84fe617a01 fix(tui): breathe running glyph symmetrically instead of blanking at the trough
The running status glyph clipped its cosine throb to a blank column below
STATUS_FADE_MIN_OPACITY, so each breath read as bold->dim->disappear rather
than bold->dim->bold. Remove the cutoff and the constant; the trough now
renders as the dimmest gray, giving a symmetric breathe. Turn-boundary
appear/disappear is unchanged (fade envelope and non-truecolor visible
threshold).
2026-07-27 19:36:39 +08:00
imccyu 6d8e5fb3a2 Merge branch 'master' into worktree/web-session-model-selector 2026-07-27 19:36:19 +08:00
Tianyi Cui dd03c88083 Merge commit 'refs/codex-unblock/20260727/pr660-master' into worktree/pr660-merge-20260727
# Conflicts:
#	scripts/doc-budgets.manifest.json
2026-07-27 19:34:55 +08:00
Turtle f9d2ab09ea fix(ci): stabilize TUI cwd-abbreviation and skill-catalog test expectations
Two CI-only test failures on the personal TUI/skills stack:

- packages/ui/tui/tests/tui.spec.ts anchored the dark-palette test at
  process.cwd(), which is not guaranteed under $HOME; on CI runners the
  prompt rendered an absolute path instead of the `~/` abbreviation. Anchor
  cwd under homedir() so the assertion is deterministic.
- examples/tui-agent/tests/tui-keyless-smoke.e2e.ts asserted stale
  dsh-customize / dsh-upgrade skill descriptions. Sync the expectations to
  the bundled SKILL.md frontmatter.
2026-07-27 19:31:04 +08:00
Chinesezjc 9dd57a25c5 fix(ui-question): stop option rows absorbing the capped card's shortfall
The question composer card is capped against the viewport and scrolls its
option list. `.options` is a flex column whose children defaulted to
`flex-shrink: 1`, so a short seat shrank the rows before overflowing the
scroll container: a row collapsed to its 42px minimum while `.optionCopy`
kept the taller height its wrapped copy needs, and `align-items: center`
then painted that copy outside the row's border box — over the question
title above and the next row below. Measured 6.5px of spill at 900x440 on
the shipped client, 10px at 380px tall, with `.options` reporting
scrollHeight === clientHeight and therefore offering no scrollbar.

`.option` and `.custom` now declare `flex-shrink: 0`, so the shortfall
reaches the scroll container that already owns `overflow-y: auto` — the
behavior the cap was designed for. Only rows whose copy wraps could
reproduce this, which is why the recorded scenario now asks a question
with long option descriptions; the web e2e asserts at three squeezed seat
heights that every row's children stay inside its border box, guarded
against holding vacuously by requiring a wrapped row and a scrolling list.
2026-07-27 19:20:33 +08:00
Chinesezjc 9f695eee21 Merge remote-tracking branch 'origin/master' into fix/pty-handoff-grace 2026-07-27 19:17:36 +08:00
_Kerman 613eaba80c fix(tui): correlate referenced prompt snapshots 2026-07-27 19:06:44 +08:00
Chinesezjc e2a20ff8fa Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 19:06:26 +08:00
Chinesezjc 30d9bdfa42 Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait 2026-07-27 19:00:30 +08:00
_Kerman 9152858fd7 fix(agent-loop): preserve deferred message boundaries 2026-07-27 18:58:27 +08:00
kingwl bb16256782 refactor(session-query): share the header column bindings between both inserts
The baseline columns pushed the two INSERT binding lists past the clone
threshold; one _headerBindings helper now owns the shared header prefix
(the duplication gate's finding).
2026-07-27 18:57:03 +08:00
Hypatia May cbe6293eec Merge remote-tracking branch 'origin/master' into codex/basic-session-search 2026-07-27 18:55:48 +08:00
Turtle 4c5f92e0fd feat(tui): personal TUI rework, integrating upstream model reasoning-effort selection
Consolidates the personal dsh-tui customizations (module split into
components/session/extension, prompt template + running-glyph indicator,
copyable transcript, tool-card headers, timing placement, XML tool output,
status/footer rework) and ports upstream's model reasoning-effort selector
(Shift+Tab effort cycling, effort-aware /model, footer, and /status) onto
the personal module layout.
2026-07-27 18:55:13 +08:00
Hypatia May 7786ff9657 fix(host): await cancelled cold-summary batches 2026-07-27 18:55:13 +08:00
Turtle 5d2329e207 feat(skills): bundle and harden personal maintenance workflows 2026-07-27 18:53:30 +08:00
Turtle bdb3e4da0e test(fs): cover read result decline paths 2026-07-27 18:53:30 +08:00
Turtle 6a7307de37 fix(llm-pi-ai): classify transport truncations
Personal customization replayed onto upstream master source.
2026-07-27 18:53:29 +08:00
ZiyaZhang fef928a7e1 feat(gui): add native workspace folder picker 2026-07-27 03:50:22 -07:00
Tianyi Cui 961bde6473 test(sdk): keep fresh Yarn installs mutable in CI
The live-link E2E intentionally creates a project without a lockfile. Prevent ambient CI=true from making Yarn 4's first install immutable, while preserving the CI environment for every other behavior under test.
2026-07-27 18:48:11 +08:00
Chinesezjc 153157195c docs(pty): scope the settle boundary to the settled operation
The paragraph claimed later child output reaches only the scrollback. Output
after a settle still reaches the scrollback and whichever send is active when
it arrives — appendOutput writes both (session.ts:302-307), and settleActive
clears `active` rather than suppressing delivery. Only the settled operation
stops receiving it, which is what the timing bound protects.
2026-07-27 18:47:23 +08:00
_Kerman 4137405cdd Merge remote-tracking branch 'github/master' into xtr/trajectory-inspection-ui
# Conflicts:
#	packages/client/runtime/src/client/sessions/conversation.ts
#	packages/client/runtime/src/client/sessions/session.ts
2026-07-27 18:41:28 +08:00
_Kerman c5be25781c feat(ui): expand request trajectory inspection 2026-07-27 18:40:30 +08:00
kingwl 33a235cd6b Merge remote-tracking branch 'origin/master' into feature/subagent-policy-inheritance
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
2026-07-27 18:39:26 +08:00
_Kerman 7c2cf5f0b3 test(workspace-context): align typed baseline fixtures 2026-07-27 18:39:22 +08:00
Hypatia May 01a12ecc98 Merge remote-tracking branch 'origin/master' into codex/basic-session-search 2026-07-27 18:38:18 +08:00
Hypatia May 4727d742db fix(web): align session search contracts 2026-07-27 18:38:00 +08:00
kingwl 6adb14b56d feat(telemetry): adopt from the construction boundary — constructor seeds never re-export
A cursor-less adoption (process restart + resume, fork, seam-module
reload) replayed the session's full log from seq 0, re-exporting
history that already left the process — a resume re-billed its entire
stored log on every restart, and a fork re-shipped the parent's prefix
under the child's id, doubling query-time counts on OTLP backends with
no native ingest dedupe.

dsh-session now exposes the fact the constructor already validated but
discarded: Session.firstLiveSeq, the constructor-seed length — the
first seq appended in this process. header.seedLength cannot serve
here: it is the durable fork-lineage boundary, and a resumed session's
constructor seed is its full stored log while the header keeps the
original fork value (llm-replay and session-query-sqlite depend on
that meaning). Constructor seeds also never publish on the
session/event firehose, so adoption replaying them was inconsistent
with the system's own publication semantics.

Adoption's cursor-less fallback starts at firstLiveSeq; seed events
still feed the chunk projection, so mid-step continuations re-drop
after a resume. Fork streams are no longer self-contained: records now
carry session.seed_length (with the existing session.parent_id) so
receivers stitch the child's stream onto the parent's. Accepted cost,
consistent with at-most-once delivery and recorded in the revival
Agent Note: a resume no longer backfills records a previous process
failed to deliver — a deployment with that requirement needs the
deferred outbox, not replay.

Pinned red-first: seeded adoption exports nothing (assertion reversed
from the prior seed-readback test, obsolete behavior changed with its
test), resume-shaped seed rebuilds the projection without exporting,
and fork records carry the stitch attributes.
2026-07-27 18:35:03 +08:00
_Kerman 6af8a2e1d8 Merge remote-tracking branch 'origin/xtr/agent-loop-message-machine' into xtr/agent-loop-message-machine 2026-07-27 18:33:22 +08:00
_Kerman 98238ceace fix(agent-loop): settle rejected admission context 2026-07-27 18:32:07 +08:00
_Kerman 5d10074839 test(workspace-context): cover unsized dynamic probe 2026-07-27 18:31:50 +08:00
Chinesezjc 4f2068ff27 Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait 2026-07-27 18:31:46 +08:00
_Kerman cda482b555 Merge branch 'master' into xtr/agent-loop-message-machine 2026-07-27 18:31:16 +08:00
Chinesezjc 68f325ac48 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 18:29:34 +08:00
_Kerman 376bf7f365 fix(workspace-context): rearm compacted baseline 2026-07-27 18:27:39 +08:00
Tianyi Cui 6c8bf0a522 fix: address human review — default providerName dsh-sdk; raise composition-e2e deadline
- subagent-sdk: the default registry name becomes `dsh-sdk` (the bare
  `sdk` read ambiguously in configs); READMEs, config catalog, fixture,
  and suites follow. The Loader fixture now omits providerName to exercise
  the shipped default end to end.
- loader-composition.e2e: two full harness runtimes boot in sequence, so
  the default 30s loader-smoke window times out under host load; raise the
  subprocess deadline to 120s with matching vitest headroom (the
  real-model.e2e precedent).
2026-07-27 18:25:18 +08:00
Chinesezjc e7ea62f522 Merge remote-tracking branch 'origin/master' into fix/pty-handoff-grace 2026-07-27 18:17:37 +08:00
Chinesezjc 1927d347cd Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait
master already stabilized the raw-mode SIGINT scenario in 65e0ffe03 and
3be090f1d with wider scenario-owned bounds and deliberately delayed child
readiness, so the merge takes master's test implementation. What this branch
keeps is the contract that explains why those bounds are required: the note
paragraph on the settle boundary in PtySendOperation.append, and the
waitForOutput comment recording that raising its deadline alone cannot
recover output the send never collected.
2026-07-27 18:15:47 +08:00
Chinesezjc e6fe489485 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 18:12:39 +08:00
_Kerman cf49101d9a Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
2026-07-27 18:12:38 +08:00
Hypatia May 621f414407 Merge remote-tracking branch 'origin/master' into codex/basic-session-search 2026-07-27 18:08:44 +08:00
_Kerman ff7792b17c docs(agent): document next-step acceptance window 2026-07-27 18:07:51 +08:00
_Kerman f63d937496 fix(tui): route prompts by next-step capability 2026-07-27 18:05:43 +08:00
fz 826c6fd243 feat(web): present Cordis lifecycle tools 2026-07-27 17:57:59 +08:00
Tianyi Cui d897dcc7ea Merge remote-tracking branch 'origin/master' into worktree/pr682-retarget-20260727
# Conflicts:
#	.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
2026-07-27 17:55:56 +08:00
_Kerman a59ce0367c fix(agent-loop): route next-step input during admission 2026-07-27 17:55:55 +08:00
_Kerman ffd2da6986 feat(ui): add request trajectory details 2026-07-27 17:54:53 +08:00
kingwl 6a3db40e52 test(ci): register the inheritance fixture with knip; close two coverage gaps
- knip: the subagent-inheritance resume fixture is a Loader-loaded entry
  (the semantic-checkpoint-agent precedent), invisible to import analysis.
- coordinator coverage: a quiet-signal observation read pins the success
  arm of observeQueuedAbort, and an approval-only baseline pins the other
  arm of the seed-boundary guard's baseline disjunction.
2026-07-27 17:52:40 +08:00