Commit Graph
9203 Commits
Author SHA1 Message Date
Turtle 70f37206d2 fix(app-boot): release the terminal before a fatal load exit
A dsh launch whose config failed validation returned the user to a broken
shell: typing was invisible and the next command was mangled by a stray
Device Attributes reply (1;2;4cecho ...).

The Loader mounts entries concurrently, so ui-tui can already hold the
terminal (raw mode, bracketed paste, keyboard protocol, plus an in-flight
DA query) when a sibling entry rejects on its own config. installFailLoud
wrote its diagnostic and exited immediately, so nothing disposed the tree
and ProcessTerminal.stop() never ran.

Give installFailLoud an optional release teardown, awaited between the
diagnostic and the exit and bounded by FAIL_LOUD_RELEASE_TIMEOUT_MS. The
TUI launcher passes one that disposes the root context, reaching the same
shutdown() the /exit path already uses (drainInput() + ui.stop()). The
context is captured in boot()'s prepare hook because the rejection arrives
while boot() is still in flight.

Bins that pass no release keep the previous behavior exactly.
2026-07-31 20:37:16 +08:00
Tianyi Cui 5c4b701afe Merge pull request #1090 from deepseek-harness/worktree/readme-install-clone
docs: install from a repository clone
2026-07-31 20:33:55 +08:00
Turtle 00c5f2abd1 refactor(install): always adopt, dropping the link-in-place path
Retaining link-in-place behind a prompt and DSH_ADOPT kept the divergent
install shape that this change exists to remove, and cost a flag, a prompt,
a dirty-tree warning, a no-commit fallback, and a second linking path.

In-repo mode now adopts unconditionally. A dirty tree adopts silently:
`worktree add` from HEAD cannot carry uncommitted work, so a prompt only
adds a decision the user cannot act on differently.

The original reason for link-in-place — keeping the script testable against
local source — survives adoption, since the staging worktree branches from
the checkout's HEAD and runs the same code. DSH_SOURCE remains the escape
hatch for installing a separate tree.

Net 47 fewer lines in the installer.
2026-07-31 20:31:30 +08:00
Tianyi Cui 2a7e659fb5 docs: install from a repository clone 2026-07-31 20:29:25 +08:00
Tianyi Cui e1c6fc3db4 Merge pull request #1032 from deepseek-harness/xtr/trajectory-timeline-polish
fix(trajectory): polish timeline timing and layering
2026-07-31 20:25:08 +08:00
Tianyi Cui 0cdf78013b Merge pull request #1087 from deepseek-harness/codex/experimental-cli-command-names
feat(cli): mark meta and upgrade commands experimental
2026-07-31 20:24:13 +08:00
Turtle 631510f54e feat(install): adopt an existing checkout into the managed layout
Running scripts/install.sh from a checkout linked `dsh` straight at that
checkout, producing an install that `dsh-upgrade` cannot upgrade (there is
no `current` to repoint), that dangles if the checkout moves, and whose
launcher resolves to an arbitrary working branch.

In-repo mode still never clones and never touches the working tree, but it
now offers to adopt the checkout, and adoption is the default. The container
owns staging worktrees and `current`; the repository is discovered via
`git rev-parse --git-common-dir` rather than owned, so a clone anywhere on
disk converges on the same upgradable layout as a curl install and both
share one worktree/exclude/lock/link sequence.

Declining, or DSH_ADOPT=0, keeps the previous link-in-place behavior with a
warning naming what it costs, preserving the path that makes this script
testable against local source.

All path comparisons run on physical paths: macOS resolves /var through a
symlink to /private/var, and comparing a resolved path against an unresolved
one misclassified an existing managed install as a foreign clone.

Verified manually (no install.spec.ts, per request) with a harness driving
the real script under a stubbed pnpm across 33 assertions, plus both
interactive outcomes under tmux.
2026-07-31 20:22:40 +08:00
ZiyaZhang 5e68d812d1 fix(web): let context injection cards fit content 2026-07-31 05:20:54 -07:00
Turtle dc88440dad Merge remote-tracking branch 'origin/master' into codex/experimental-cli-command-names
# Conflicts:
#	apps/cli/README.i18n.yaml
#	packages/ui/tui/README.i18n.yaml
2026-07-31 20:18:15 +08:00
Turtle 60a0bcd358 feat(cli): mark meta and upgrade commands experimental 2026-07-31 20:16:19 +08:00
_Kerman e921fae362 Merge remote-tracking branch 'github/master' into xtr/trajectory-timeline-polish 2026-07-31 20:12:20 +08:00
Tianyi Cui e1eb581f2b Merge pull request #1018 from deepseek-harness/feature/tui-first-run-welcome
feat(tui): add versioned first-run welcome
2026-07-31 20:08:56 +08:00
_Kerman 966add3305 Merge remote-tracking branch 'github/master' into xtr/trajectory-timeline-polish 2026-07-31 20:01:50 +08:00
_Kerman dd98d15b1d Merge remote-tracking branch 'github/master' into xtr/trajectory-timeline-polish
# Conflicts:
#	packages/client/ui-trajectory/src/client/timeline.ts
#	packages/client/ui-trajectory/tests/views.spec.tsx
2026-07-31 20:01:16 +08:00
imccyu d93fe10682 Merge pull request #1084 from deepseek-harness/fix/remove-badge
feat: remove "插话" badge displayed in user message
2026-07-31 19:59:25 +08:00
Tianyi Cui 4ada0017cf fix(install): build workspace artifacts before web 2026-07-31 19:57:51 +08:00
_Kerman 094f1976c4 fix(trajectory): lighten summary section headings 2026-07-31 19:53:55 +08:00
Tianyi Cui 76f3b402e1 Merge remote-tracking branch 'origin/master' into worktree/pr1018-todo-retarget-20260731 2026-07-31 19:48:14 +08:00
Tianyi Cui c83159f1c0 test(cli): acknowledge welcome in composition smoke 2026-07-31 19:48:04 +08:00
imccyu 23ee31efc0 Merge branch 'master' into fix/remove-badge 2026-07-31 19:47:55 +08:00
Tianyi Cui 0d949cfe67 feat(install): choose web or tui after setup 2026-07-31 19:47:54 +08:00
_Kerman 8e88b17c9f fix pre-step lifecycle regressions 2026-07-31 19:40:59 +08:00
Tianyi Cui d64b032311 Merge pull request #1082 from deepseek-harness/worktree/fix-web-duplicate-folder-names-20260731
fix(workspace): allow same-basename folders in Web
2026-07-31 19:37:38 +08:00
07akioni 410a837e02 Merge remote-tracking branch 'origin/master' into fix/remove-badge 2026-07-31 19:33:01 +08:00
Tianyi Cui e0cedd16b8 Merge remote-tracking branch 'origin/master' into worktree/pr1018-todo-retarget-20260731 2026-07-31 19:25:27 +08:00
Tianyi Cui 7d04e4654a Merge remote-tracking branch 'origin/master' into worktree/pr1018-todo-retarget-20260731
# Conflicts:
#	apps/cli/README.i18n.yaml
#	packages/ui/tui/README.i18n.yaml
2026-07-31 19:23:34 +08:00
Ziya 9b1486f90f Merge pull request #1078 from deepseek-harness/fix/web-turn-error-surface
fix(web): surface terminal turn failures
2026-07-31 07:23:09 -04:00
Tianyi Cui 2abf643326 Merge pull request #1040 from deepseek-harness/feat/recommended-deployment-presets
feat(cli): even out the shipped tool rosters across both surfaces
2026-07-31 19:21:18 +08:00
_Kerman fcc2b5e282 refactor agent pre-step inbox lifecycle 2026-07-31 19:21:16 +08:00
07akioni 57d6d9ee1c fix: ci 2026-07-31 19:20:23 +08:00
07akioni 94a600eddd Merge branch 'master' into fix/remove-badge 2026-07-31 19:19:55 +08:00
Tianyi Cui 2d73157099 docs(client): refresh runtime README pairing 2026-07-31 19:18:08 +08:00
Tianyi Cui 3aa98ba609 Merge remote-tracking branch 'origin/master' into worktree/pr1018-todo-retarget-20260731
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/cli/README.md
#	apps/cli/README.zh.md
2026-07-31 19:17:50 +08:00
hypatiamay dcc9e50f84 Merge pull request #1026 from deepseek-harness/feat/compaction-progress-visibility
feat(tui): show live compaction progress
2026-07-31 19:17:43 +08:00
Tianyi Cui c16e33d8db Merge latest master into feat/recommended-deployment-presets
# Conflicts:
#	apps/cli/README.i18n.yaml
#	apps/web/tsconfig.json
#	tsconfig.host.json
2026-07-31 19:16:05 +08:00
Tianyi Cui 53e7e5b247 docs(cli): track welcome storage migration 2026-07-31 19:14:24 +08:00
07akioni 1766461947 Merge remote-tracking branch 'origin/master' into fix/remove-badge 2026-07-31 19:13:22 +08:00
Ziya 9473951c79 Merge branch 'master' into fix/web-turn-error-surface 2026-07-31 07:13:02 -04:00
07akioni f9dc4aa702 feat: remove "插话" badge displayed in user message 2026-07-31 19:12:16 +08:00
hypatiamay 57761539b4 Merge pull request #989 from deepseek-harness/feat/manual-compact-single-lock
feat(compact): add queued manual /compact
2026-07-31 19:10:48 +08:00
Ziya 4f13ce7b7f Merge branch 'master' into fix/web-turn-error-surface 2026-07-31 07:07:05 -04:00
Turtle a942c726f5 fix(tui): abort the resume scan with its overlay
Review findings from ds-review-bot: closing the loading picker now
aborts the scan through the AbortSignal both query methods accept, a
signal-ignoring backend's late settlement is dropped by a staleness
check, one catch spans listing and projection so a projection failure
closes the overlay instead of stranding the loading placeholder,
setCandidates clears a stale still-loading error, and the batch
comment no longer overstates the win as scaling with session count.
2026-07-31 18:57:24 +08:00
CreatixChu 76694f435a Merge pull request #1076 from deepseek-harness/worktree/hero-blank-session-settling
fix(ui-conversation): keep hero visible while a blank session opens
2026-07-31 18:56:48 +08:00
creatixchu 2dde4e7f09 test(web): follow connectFreshWorkspace's staged-directory signature 2026-07-31 18:46:22 +08:00
creatixchu 404c58717a Merge remote-tracking branch 'origin/worktree/hero-blank-session-settling' into worktree/hero-blank-session-settling 2026-07-31 18:43:37 +08:00
Tianyi Cui ce04a85d80 Merge origin/master into same-basename workspace fix
# Conflicts:
#	packages/client/ui-workspace/README.i18n.yaml
2026-07-31 18:42:20 +08:00
CreatixChu e18efd3375 Merge branch 'master' into worktree/hero-blank-session-settling 2026-07-31 18:39:38 +08:00
Tianyi Cui 678ad97f9a Allow same-basename Workspace paths 2026-07-31 18:37:34 +08:00
creatixchu a4d88a98ee doc(agent-notes): widen the settling-exemption note to the shipped condition 2026-07-31 18:37:08 +08:00
creatixchu da500aae67 test(web): pin the startup auto-selection hero in the assembled app
Holds the session.history response at the browser's network boundary so
the auto-selected open is observable, then asserts the visible frame and
the recorded phase timeline. Registered host-plane like the other
scaffold-booting e2e files (host include + client project exclude).
2026-07-31 18:37:06 +08:00