Skip to content

feat: the inbox daemon keeps answering while git works; dismissals hold for one head; rows show timestamps - #88

Merged
fiddur merged 3 commits into
developfrom
inbox-daemon-async
Sep 3, 2026
Merged

feat: the inbox daemon keeps answering while git works; dismissals hold for one head; rows show timestamps#88
fiddur merged 3 commits into
developfrom
inbox-daemon-async

Conversation

@fiddur

@fiddur fiddur commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Three things seen in live use of the inbox today.

  • The daemon froze during git. prepareWorktree (fetch + worktree add), removeWorktree, the bundle export and the bundle import all ran synchronously inside the daemon, so its HTTP server stopped answering for as long as they took — minutes on a NCBackend3 worktree with node_modules. An /open clicked during a tick spun "waiting for localhost"; a dismiss appeared to do nothing until the removal finished. Every one of them is async now; the reviewer-facing routes never wait on git.
  • Dismiss answers first. The row is marked and the 204 sent before the worktree is reclaimed in the background; the page removes the row optimistically. A dismissal now holds for that head only: new commits re-queue the pull request, the same rule a skipped verdict follows. Confirm text softened accordingly.
  • Timestamps. The pull request's createdAt/updatedAt come through the snapshot into the store (two new nullable columns, migrated in place) and onto every row as "opened 3 d ago · updated 2 h ago".

Bumps to 0.10.15.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Bwp5QefjsjMFeq6CK6cT6w

fiddur and others added 3 commits September 3, 2026 15:11
…olds for one head, and rows show the forge's timestamps

The daemon ran git synchronously — fetch and worktree add while preparing, worktree remove
on a dismissal or a retirement, and the bundle export and import — and every one of them
froze its own HTTP server for as long as it took, which on a node_modules-laden checkout is
minutes: an open spun "waiting for localhost" through a tick, and a dismiss looked like it
did nothing until the removal finished. All of it is async now. A dismissal marks the row
and answers before the directory goes, the page drops the row at once, and the dismissal
holds only for that head: new commits are a new change and are taken from the top, as a
skip already was. Rows carry the pull request's created and updated times.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bwp5QefjsjMFeq6CK6cT6w
… an empty meta line is not drawn

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bwp5QefjsjMFeq6CK6cT6w
@fiddur
fiddur marked this pull request as ready for review September 3, 2026 13:19
@fiddur
fiddur merged commit 363114c into develop Sep 3, 2026
2 checks passed
@fiddur
fiddur deleted the inbox-daemon-async branch September 3, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant