# feat\(web\): show each worktree setup step and let users cancel it \(\#11372\) · screen/t3code-personal

[View on GitCafe](https://git.cafe/screen/t3code-personal/commit/73b206f4bf99e7e98ae144a9d9edbf7cb2700fc1)

Repository: [screen/t3code-personal](https://git.cafe/screen/t3code-personal)

Visibility: public

Requested revision: 73b206f4bf99e7e98ae144a9d9edbf7cb2700fc1

Requested commit: 73b206f4bf99e7e98ae144a9d9edbf7cb2700fc1

Commit: 73b206f4bf99e7e98ae144a9d9edbf7cb2700fc1

Tree: 666297d86d075308a8aaab5f8d745452a498a294

Author: Theo Browne

Committer: GitHub

## Message

```
feat(web): show each worktree setup step and let users cancel it (#11372)

Starting a thread in a new worktree showed one static "Setting up worktree" line while git fetched, checked out files, and the setup script ran. Users could not tell which step was slow, see setup script output without hunting for the terminal, or stop a setup that was going wrong.

The timeline now shows a card with each step and its elapsed time. Check out files has a percent bar fed by git's own progress output. The setup script step shows the last lines of its terminal inline and links to the full terminal. Cancel stops the bootstrap and removes the half built worktree. Work locally cancels, switches the draft to the project checkout, and resends.

The server keeps an in-memory per-thread snapshot of the bootstrap stages and streams it over a new subscribeWorktreeSetup RPC. The bootstrap runs as a child fiber so worktreeSetup.cancel can interrupt it, and the turn handoff is uninterruptible. The setup script's exit code comes from a per-run sentinel echoed after the command in the setup PTY.

Created with Claude Fable 5.1 in Claude Code.
```

## Parents

- [b70015b6db8ffafd902174f78cb260cc8082fc6e](https://git.cafe/screen/t3code-personal/commit/b70015b6db8ffafd902174f78cb260cc8082fc6e?format=markdown)

[Source at this commit](https://git.cafe/screen/t3code-personal/tree/73b206f4bf99e7e98ae144a9d9edbf7cb2700fc1?format=markdown)
