Skip to content

feat: integrate project thread workflow status - #9

Merged
cursor[bot] merged 21 commits into
mainfrom
buzz/eb791333c0ee
Aug 1, 2026
Merged

feat: integrate project thread workflow status#9
cursor[bot] merged 21 commits into
mainfrom
buzz/eb791333c0ee

Conversation

@oscarlehuu

Copy link
Copy Markdown

Summary

  • create project-thread worktrees from the fetched GitHub default branch with a bounded local fallback
  • add typed Close PR, Delete branch, and Remove worktree lifecycle actions with confirmations and dirty-worktree refusal
  • replace stacked workspace cards with the compact 2×3 workspace / GitHub status strip and expandable history details
  • append reply-added agents to the visible handoff while preserving the root-only composer audience
  • add official chat avatars for preset providers and a verified Devin ACP preset

Why

Each project thread represents one feature branch. The thread should expose its worktree, handoff, PR, issue, CI, and lifecycle state without consuming most of the conversation panel, while cutting new work from the current remote default branch.

Validation

  • just ci
  • desktop unit tests: 3,889 passed, 1 skipped
  • Tauri tests: 1,910 passed, 14 ignored
  • Project-thread Playwright E2E: 2 passed
  • independent reviews by Claude Opus and Cursor Grok High Fast at fecefd396fc9e43298297396c19ef3a2caab6527: no blockers
  • NuncioCrew Local.app built from the exact reviewed SHA

Remaining release gate

The PR stays draft until the 10-step Computer Use checklist passes on the real local app. The current macOS UI session is not exposing any CG window (cgWindowNotFound), so merge and stable release remain intentionally blocked.

oscarlehuu and others added 15 commits July 31, 2026 14:53
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Oscar Le Huu <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
@devin-ai-integration

Copy link
Copy Markdown

Runtime verification of the v0.0.6 thread-integration gate (real Tauri app)

Driven end-to-end in the actual desktop app (Linux build from this branch) against a local relay with two Devin-ACP preset agents — no mock bridge. Full report + screen recording in the Devin session: https://app.devin.ai/sessions/b8950bc6e13e441bae8281748de180bb

⚠️ Two blockers found — merge is still gated.

1. Destructive lifecycle actions run with no confirmation. Remove worktree, Delete branch and Close PR all execute on the first click. The webview logs Unknown Error: dialog.confirm not allowed. Command not foundwindow.confirm in ProjectThreadWorkspaceDetails.tsx:71 maps to a dialog.confirm IPC command that isn't in the app capabilities, so the shim returns a truthy Promise and the guard is bypassed every time. One click closed a real PR on GitHub.

Close PR executed with no confirmation

2. Clicking a community in the left rail crashes the app (reproduced 2/2, window and process gone, no Rust panic). There's no other switcher, so "no PR data leaks across communities" could not be verified.

✅ What does work (verified in-app)
  • Worktree is cut from the fetched remote tip: drawer Base 8edc761 (= origin/main) while the clone's HEAD is b52909c.

    Workspace drawer showing remote-tip base

  • Compact strip renders as 3-column rows (2×3 once a PR exists) and every cell opens its drawer; Issue/PR/CI populate from a real draft PR with 5 live CI checks.

    2x3 strip with PR row

  • Agent mentioned in a reply joins the handoff list ("Added in a reply") and moves working → done.

  • Remove worktree is blocked with an explanation while the worktree is dirty and succeeds once clean.

  • Devin-preset agents show the vendor avatar; Ctrl +/- scales all strip text.

Other findings
  • crates/buzz-acp/src/thread_workspace/base.rs: detached_remote_head_reuses_the_configured_remote_default_branch was failing on this branch (LocalFallback instead of Remote) — the resolver never consulted the configured upstream. Fixed in ef7adaa94. Note this Rust test surface is not covered by NuncioCrew Gate, which is why PR CI was green.
  • Thread workspace/PR state is in-memory only: after an app restart the strip reverts to Preparing and the GitHub row vanishes, so lifecycle actions become unreachable for that thread.
  • With no PR the row is omitted entirely — there is no literal "No PR yet" label as the checklist describes.
  • There is no in-app "open a PR from the thread" action; the PR had to be created outside the app (detection itself works).
  • Managed agent pairs connect to ws://127.0.0.1:3000; on a localhost:3000 community they log discovered 0 channel(s) — agent will sit idle and threads never leave Preparing.

Checklist status: 1, 2, 3, 4, 6, 8, 9 passed · 5 passed for detection only · 7 failed · 10 untested (crash).

devin-ai-integration Bot and others added 3 commits August 1, 2026 05:15
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
@devin-ai-integration

Copy link
Copy Markdown

Re-run: lifecycle confirmations verified in the real desktop app

Re-tested end-to-end in the actual Tauri app against a local relay with a Devin-ACP agent — no mock bridge. Session: https://app.devin.ai/sessions/b8950bc6e13e441bae8281748de180bb

The item-7 blocker from the previous round is resolved. All three destructive actions now open an in-app dialog, Cancel is genuinely inert, and Confirm performs the action (verified on disk and via gh, not just by the toast).

✅ Confirmations (Cancel verified inert, Confirm verified effective)
Remove worktree Delete branch
Remove worktree dialog Delete branch dialog

Close PR dialog

Remove worktree — Cancel: worktree still in `git worktree list`; Confirm: gone from disk, branch survives
Delete branch   — Cancel: buzz/1eab81a205b7 still listed;        Confirm: branch deleted
Close PR        — Cancel: gh -> {"number":12,"state":"open"};    Confirm: gh -> {"number":12,"state":"closed"}

(PR #12 was a user-approved throwaway draft PR, closed through the app's Close PR button; its scratch branch has been deleted.)

Also re-checked: dirty refusal, all six drawers, new status colours, button layout
  • Dirty worktree: Uncommitted changes, both buttons disabled, no dialog, worktree untouched on disk.

  • All six strip cells open their drawers; PR/CI status colours render — Draft (muted) → Passing (emerald) → Closed (red), with matching drawer badges.

    Closed PR + passing CI

  • Workspace buttons no longer overlap; at the default narrow panel width the labels truncate with "…" and render in full when the panel is widened.

    buttons at default width

  • Still untested: community switching (crashes the app, confirmed pre-existing on main — not a regression from this PR), and opening a PR from the thread (no in-app action exists).

@devin-ai-integration
devin-ai-integration Bot marked this pull request as ready for review August 1, 2026 05:34
devin-ai-integration Bot and others added 3 commits August 1, 2026 05:34
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
@cursor
cursor Bot merged commit 061b702 into main Aug 1, 2026
5 checks passed
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