Commit Graph

8666 Commits

Author SHA1 Message Date
Turtle
f128e126d7 Merge remote-tracking branch 'origin/master' into perf/tui-resume-scan
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/tui/src/components/dialogs.ts
2026-08-03 17:06:28 +08:00
Tianyi Cui
731f16ceb0 Merge pull request #1179 from deepseek-harness/worktree/production-issue-management
chore: add Issue management runtime
2026-08-03 17:01:37 +08:00
Yichen Jiang
3009bc5312 Merge pull request #1003 from deepseek-harness/worktree/web-remote-markdown-images
feat(web): render remote Markdown images
2026-08-03 16:41:00 +08:00
Turtle
7077d6befc refactor(tui): resume rows fold titles only, timestamp from artifact mtime
Rows no longer read logs for anything but the batch title fold: the
activity timestamp is a live session's last in-memory event time or the
artifact mtime via the optional sessionPersistence.locate(), falling
back to creation time; the last-turn, route, and goal columns are gone.
Route availability moves to the Enter-time preflight, which already
fully reads and replay-validates the one chosen log. The projectSessions
public API this PR had added to session-query is reverted — the change
is now confined to the TUI package.
2026-08-03 16:40:47 +08:00
Tianyi Cui
f3fd8e4cd3 chore: add Issue management runtime 2026-08-03 16:38:11 +08:00
imccyu
8daca45712 Merge pull request #1150 from deepseek-harness/codex/fork-real-turn-tail
fix(web): restrict message forks to completed turn tails
2026-08-03 16:30:23 +08:00
imccyu
fec8339a18 Merge branch 'master' into worktree/web-remote-markdown-images 2026-08-03 16:23:50 +08:00
imccyu
a8a97d0202 Merge branch 'master' into codex/fork-real-turn-tail 2026-08-03 16:23:46 +08:00
Turtle
124bef3889 Merge pull request #1067 from deepseek-harness/pr/tui-details-fold
feat(tui): hidden-mode assistant fold and /details command
2026-08-03 16:23:13 +08:00
Yichen Jiang
886c39d302 test(web): refresh Markdown image snapshot 2026-08-03 16:21:02 +08:00
kingwl
c5050f018e fix(web): keep ineligible message forks disabled 2026-08-03 16:19:49 +08:00
Yichen Jiang
61cba0cda2 Merge remote-tracking branch 'origin/master' into worktree/web-remote-markdown-images
# Conflicts:
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-primitives/README.md
#	packages/client/ui-primitives/README.zh.md
#	packages/client/ui-primitives/src/markdown/MarkdownText.tsx
#	packages/client/ui-primitives/tests/markdown.spec.tsx
2026-08-03 16:09:51 +08:00
Turtle
2178c66b0d test(tui): refresh queued compaction help snapshot 2026-08-03 16:06:51 +08:00
kingwl
c43eaaec82 Merge remote-tracking branch 'origin/master' into codex/pr-1150-disabled
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
#	packages/client/ui-conversation/README.i18n.yaml
2026-08-03 16:02:33 +08:00
Turtle
4fa1d48bf9 Merge remote-tracking branch 'origin/master' into pr/tui-details-fold 2026-08-03 15:56:02 +08:00
Turtle
bea60a430e Merge remote-tracking branch 'origin/master' into pr/tui-details-fold
# Conflicts:
#	docs/cordis-catalog/services.md
#	packages/ui/tui/README.i18n.yaml
#	packages/ui/tui/README.md
#	packages/ui/tui/README.zh.md
#	packages/ui/tui/src/index.ts
2026-08-03 15:55:22 +08:00
Wenlu Wang
6a3caea277 Merge pull request #1160 from deepseek-harness/codex/subagent-token-metrics
Show subagent token metrics
2026-08-03 15:35:17 +08:00
imccyu
2d31ec5fee Merge pull request #1173 from deepseek-harness/agent/web-bash-error-expand
fix(web): expand aborted Bash rows
2026-08-03 15:30:52 +08:00
kingwl
d5583210d4 tighten branchless subagent catalog layout 2026-08-03 15:19:53 +08:00
Turtle
ef7637a5d8 Merge pull request #1093 from deepseek-harness/fix/tui-terminal-restore-on-boot-failure
fix(app-boot): restore the terminal when boot fails
2026-08-03 14:48:20 +08:00
ZiyaZhang
e63df333a1 test(web): normalize abort snapshot date 2026-08-02 23:45:47 -07:00
Wenlu Wang
8e820bbbf5 Merge pull request #1159 from deepseek-harness/codex/subagent-token-duration
Fix subagent active duration tracking
2026-08-03 14:45:29 +08:00
Turtle
f503c92aff Merge branch 'master' into fix/tui-terminal-restore-on-boot-failure 2026-08-03 14:40:58 +08:00
Ziya
b6b642fae4 Merge branch 'master' into agent/web-bash-error-expand 2026-08-03 02:30:36 -04:00
imccyu
8527ce23ae Merge pull request #1169 from deepseek-harness/worktree/directory-picker-path-editor
fix(directory-picker-browse): advertise the path editor and walk the panes with the draft
2026-08-03 14:30:34 +08:00
imccyu
1c4fca4e63 Merge pull request #1172 from deepseek-harness/xtr/trajectory-timeline-interactions
feat(ui-trajectory): improve timeline timing, layout, and navigation
2026-08-03 14:27:12 +08:00
kingwl
a75b323e2e merge fractional duration normalization 2026-08-03 14:15:45 +08:00
kingwl
a9ed7c2e98 fix fractional duration normalization 2026-08-03 14:14:48 +08:00
Turtle
ad4aeacd19 fix(hmr,include): settle a failing boot instead of a silent exit 13
Master's transactional loader made the invalid-provider PTY case regress:
the HMR main watcher's initial scan refreshed the include mid-initial-apply,
the concurrent group updates stranded the include fiber, and once serialized
the failing apply's rollback deadlocked on HMR's refresh drain — dsh exited
13 with no diagnostic and the terminal stranded, the exact symptom this
branch fixes. Serialize every include child-tree mutation through one queue
and pass ignoreInitial to the HMR main watcher; the failing boot now settles
through boot()'s labelled rejection with the tree disposed and exit 1. The
PTY case asserts the settled diagnostic; the fail-loud release remains the
guard for rejections boot cannot see.
2026-08-03 14:14:20 +08:00
Turtle
b37c22bd0a Merge origin/master: combine boot-owned settlement with the fail-loud release
Conflicts: apps/cli/src/tui.ts (keep the release install over master's comment
rewording), packages/ui/app-boot/README* (master's new installFailLoud row
wording plus this branch's release and timeout rows).
2026-08-03 14:10:23 +08:00
ZiyaZhang
0a4ad25ce7 fix(web): expand aborted Bash rows 2026-08-02 23:06:00 -07:00
_Kerman
5b17413108 docs(ui-trajectory): record composer overlay contract 2026-08-03 14:02:54 +08:00
_Kerman
667960182a test(web): normalize detailed local clocks 2026-08-03 14:02:46 +08:00
_Kerman
5534431d42 fix(ui-trajectory): own composer overlay geometry 2026-08-03 14:02:40 +08:00
creatixchu
95826603cb review(web): poll the pane-arity assertions in the path-editor e2e
A bare count can observe a landing mid-commit on a loaded runner, and the
arity is the invariant this scenario exists to pin.
2026-08-03 13:57:20 +08:00
Yif
062a1507f1 feat(ui-trajectory): float the composer over the ledger like chat
The trajectory host kept the composer as a fixed flex sibling, so the
ledger never reached the viewport bottom. Anchor the composer seat
absolutely over the ledger (reusing chat's fade treatment) and have the
internal scroll panes reserve the composer's live height plus a 16px gap
so end rows and detail bodies scroll clear of the overlay.

(cherry picked from commit 0058a1f4b6e8c2e23bfde7c827a84838cc5ebffc)
2026-08-03 13:55:33 +08:00
_Kerman
44304a458c fix(ui-trajectory): separate consecutive request markers 2026-08-03 13:53:50 +08:00
_Kerman
68e79ed983 docs(ui-trajectory): record timeline interaction contract 2026-08-03 13:48:11 +08:00
_Kerman
74cd2e4bd9 feat(ui-trajectory): enrich timeline timing interactions 2026-08-03 13:48:03 +08:00
_Kerman
c8ece8325c fix(ui-trajectory): follow live ledger tail 2026-08-03 13:47:55 +08:00
_Kerman
a8478fc031 fix(ui-trajectory): animate responsive ledger layout 2026-08-03 13:47:51 +08:00
_Kerman
94dabcb7ed feat(ui-primitives): support delayed multiline tooltips 2026-08-03 13:47:37 +08:00
creatixchu
6c0ce22f59 fix(directory-picker-browse): light the whole bar, and move the view once per keystroke
The hover affordance framed only the strip right of the crumbs. The bar itself
now carries the outline and the padding in both modes, so hovering previews
exactly the field the click produces and nothing resizes when the two swap.

One keystroke moved the view twice: deleting a separator first narrowed the
pane the draft had just walked away from, then replaced it with its landing.
The tail now filters only the LAST pane — the one whose level the path names —
so a pane on its way out holds still until its landing arrives.

Also from the review round: the walk waits both legs out instead of taking the
submitted-navigation bound (a speculative scan has nothing waiting on it, and
a tail keystroke aborting a slow parent leg would otherwise strand the
two-pane view); a level keeps answering the directory text that produced it,
so `..` segments and Windows forward slashes filter and stop rescanning; the
release-on-miss rule counts displayable rows, so it survives `hidden` ever
meaning more than dot-prefixed; and the editor's 250ms rest joins the other
two constants on the remote-recalibration list.
2026-08-03 13:45:30 +08:00
Turtle
776cc6889a Merge remote-tracking branch 'origin/master' into perf/tui-resume-scan
# Conflicts:
#	packages/ui/tui/README.i18n.yaml
2026-08-03 13:37:53 +08:00
kingwl
583d532bc3 merge compact duration display
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md
#	apps/web/tests/snapshots/subagent-conversation/tree.expected.md
#	packages/client/ui-subagent/README.i18n.yaml
#	packages/client/ui-subagent/README.md
#	packages/client/ui-subagent/README.zh.md
#	packages/client/ui-subagent/src/client/SubagentCatalogAction.tsx
#	packages/client/ui-subagent/tests/conversation-ui.spec.tsx
2026-08-03 13:31:19 +08:00
creatixchu
2ceed380dd fix(directory-picker-browse): keep the typed level in the last pane
Skipping the draft-following scan whenever ANY pane happened to list the
directory was the cheaper rule and the wrong one: erasing a segment left the
level being typed on the LEFT, with its own child pane still standing to its
right, so the two panes stopped reading as "where I am, and where I came
from".

The pane arity is now the invariant the editor maintains — the last pane lists
the level the path names, its parent sits beside it, and only a display root
lists alone. Only that last pane's own tail costs no scan; every other
directory part re-lands.
2026-08-03 13:27:45 +08:00
kingwl
255cd90c6e compact long subagent durations 2026-08-03 13:23:40 +08:00
creatixchu
233ea50104 Merge remote-tracking branch 'origin/master' into worktree/directory-picker-path-editor 2026-08-03 13:14:27 +08:00
creatixchu
c58b07833e fix(directory-picker-browse): land the draft-following walk two-pane
The draft-following scan replaced the panes with one wide level, so typing a
path collapsed the dialog's Miller view — the thing the dialog is. It now
lands through the same selection-anchored landing every navigation uses:
target and parent legs as one frame, the target re-selected in its parent
level, its children on the right. Typing a path moves the Miller view exactly
as a crumb jump does.

One landing shape, two callers: `land(path, {closeEditor, announce})` is what
`navigate` and the draft-following scan share. A submitted path closes the
editor and announces failures; the speculative scan keeps both to itself and
re-parks the focus its swap dropped.

A level a pane already lists still needs no scan at all — the filter alone
answers the draft — so erasing back into the parent's own path keeps both
panes and only moves the filter.
2026-08-03 13:08:31 +08:00
creatixchu
30f442d42e review(directory-picker-browse): re-arm the draft-following wait per keystroke
ds-review-bot round one. Keying the debounce on the directory part the draft
named left two states with no recovery until the operator crossed a separator:
a keystroke that superseded an in-flight scan never re-armed one, and an edit
after a rejected submission released the hold with no timer left to release.
The wait is now keyed on the draft itself and decides its target when it
fires, reading the panes through a ref so a landing cannot re-arm it (a host
answering with a differently spelled path would otherwise scan forever).

A landed scan that unmounts the row a keyboard operator Tabbed onto re-parks
focus on the still-open editor; the Modal has no focus trap. That a walked-to
level survives closing the editor is now stated in the README, the Agent Note,
and the module contract. The new e2e stages its own beta directory so running
it alone sees the tree its assertions describe.
2026-08-03 12:11:11 +08:00