Commit Graph

3460 Commits

Author SHA1 Message Date
Chinesezjc
23ea010789 Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 21:46:32 +08:00
Tianyi Cui
605df45928 Merge remote-tracking branch 'origin/master' into feat/telemetry-otel-plugin 2026-07-27 21:32:50 +08:00
Tianyi Cui
0af16387ae fix(telemetry): rename record waterfall 2026-07-27 21:30:28 +08:00
Chinesezjc
207bab0c21 Merge remote-tracking branch 'origin/master' into fix/question-composer-row-shrink 2026-07-27 21:11:15 +08:00
kingwl
7d4b984037 Merge remote-tracking branch 'origin/master' into feat/telemetry-otel-plugin
Resolutions: regenerate the conflicted generated docs (cordis services
catalog, event-producer-consumer, module-graph); take master's
packages/README pair and re-insert the telemetry row on both sides;
re-record the README and session-doc translation pairs.
2026-07-27 20:26:21 +08:00
Chinesezjc
82f66f8fde Merge remote-tracking branch 'origin/master' into fix/question-composer-row-shrink 2026-07-27 20:20:16 +08:00
kingwl
bf76c52d76 fix(telemetry): reject non-positive maxExportBatchSize at plugin load
Review finding, pinned red-first: the SDK accepts
processor.maxExportBatchSize <= 0 (or fractional), but its shutdown
drain then splices empty batches without consuming the queue —
disposing telemetry hangs forever whenever records are queued. The
constructor now rejects a non-positive-integer batch size before
building the SDK processor, per the misconfiguration-fails-loud rule;
everything else in the processor block remains the SDK's verbatim
passthrough.
2026-07-27 20:11:30 +08:00
Ziya
91d85773ac Merge branch 'master' into feat/workspace-native-folder-picker 2026-07-27 08:06:44 -04:00
Chinesezjc
2bac6f3062 Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 20:04:50 +08:00
Tianyi Cui
08851a1a3e Merge branch 'master' into turtle1999-patch-1 2026-07-27 19:57:43 +08:00
kingwl
a72436105b docs(telemetry): state the crash-repair export semantics for resumed streams
Review finding: synthetic turn closers written by SessionPersistence
.load() at crash-resume sit below firstLiveSeq and are never exported,
leaving the remote turn unbalanced. Kept deliberately — exporting a
synthetic closer cannot complete a turn whose real tail records died
in the crashed process's queue; it can only make an incomplete turn
look closed. The OTel README now states the receiver rule (a
never-closed turn on a resumed stream marks the previous process dying
inside it; a later clean shutdown marker attests only to the resumed
process's exit), and the revival Agent Note records why the repair
suffix stays local.
2026-07-27 19:49:19 +08:00
Chinesezjc
109fe533ba Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 19:45:54 +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
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
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
30d9bdfa42 Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait 2026-07-27 19:00:30 +08:00
Chinesezjc
55c7a620af Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 18:57:49 +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
Chinesezjc
56d673c4d7 Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 18:45:47 +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
Chinesezjc
4f2068ff27 Merge remote-tracking branch 'origin/master' into fix/pty-raw-ready-wait 2026-07-27 18:31:46 +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
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
Chinesezjc
b55e2b793a Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 17:51:57 +08:00
Turtle
ac1431e4f5 fix(session-title): improve prompt
bad case:
when i start the session with a skill reference, llm returns XML
2026-07-27 17:47:48 +08:00
Tianyi Cui
94d5816142 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:38:01 +08:00
Chinesezjc
a2e3c1b242 Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 17:29:59 +08:00
Chinesezjc
f69124cc4a Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-23-web-todo-display.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-23-web-todo-display.md
#	.agents/notes/implemented/feature/2026-07-23-web-todo-display.zh.md
#	apps/web/tests/todo-display.snapshot.ts
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.md
#	packages/client/ui-conversation/README.zh.md
#	packages/client/ui-conversation/src/client/skeleton/TodoPanel.tsx
#	packages/client/ui-conversation/tests/todo-panel.spec.tsx
2026-07-27 17:29:44 +08:00
Tianyi Cui
1ee8029bc6 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:24:20 +08:00
imccyu
e8cbf6cc72 fix: remove orig 2026-07-27 17:22:01 +08:00
imccyu
0052ea49ff Merge branch 'master' into feature/delete-workspace 2026-07-27 16:59:28 +08:00
Chinesezjc
0236e175aa Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress 2026-07-27 16:56:49 +08:00
imccyu
cbcb911781 Merge branch 'master' into feat/todo-tool-ui 2026-07-27 16:55:35 +08:00
imccyu
50ec3b1db0 Merge branch 'master' into feat/todo-tool-ui 2026-07-27 16:54:34 +08:00
imccyu
5b81025b58 Merge branch 'master' into feature/delete-workspace 2026-07-27 16:52:24 +08:00
Chinesezjc
8461952f33 Merge remote-tracking branch 'origin/master' into feat/todo-multi-in-progress
# Conflicts:
#	docs/core-data-structures/session.i18n.yaml
2026-07-27 16:47:26 +08:00
07akioni
87a94b58d2 fix: ci 2026-07-27 16:47:20 +08:00
Tianyi Cui
aa95a3007f Merge remote-tracking branch 'origin/master' into worktree/pr683-retarget-20260727 2026-07-27 16:40:42 +08:00
Tianyi Cui
21fe97d19d Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
# Conflicts:
#	docs/architecture.i18n.yaml
#	docs/core-data-structures/core.i18n.yaml
2026-07-27 16:40:07 +08:00
Tianyi Cui
9801a0d102 fix(tool-web): bound HTML conversion work 2026-07-27 16:40:02 +08:00
07akioni
16598f7159 fix: cr 2026-07-27 16:36:36 +08:00
07akioni
900e45b365 feat: optimize todo tool ui 2026-07-27 16:24:30 +08:00
Tianyi Cui
ab25c34ea0 Merge remote-tracking branch 'origin/master' into worktree/fix-ci-timing-flakes-20260727 2026-07-27 16:09:50 +08:00
NI0317
c171ecc60b Merge remote-tracking branch 'origin/master' into feature/delete-workspace 2026-07-27 16:07:11 +08:00
Tianyi Cui
ae18216199 Merge remote-tracking branch 'origin/master' into worktree/pr683-retarget-20260727 2026-07-27 16:03:33 +08:00
07akioni
62e2551edd fix: darkmode 滚动条颜色 2026-07-27 16:01:01 +08:00
Tianyi Cui
9b8e6e6548 Merge remote-tracking branch 'origin/master' into worktree/fix-ci-timing-flakes-20260727 2026-07-27 15:58:37 +08:00