Skip to content

[AIDE-100] Worktree Commit - #80

Merged
chandlerhuff merged 12 commits into
mainfrom
feature/AIDE-100-worktree-commit
Aug 3, 2026
Merged

[AIDE-100] Worktree Commit#80
chandlerhuff merged 12 commits into
mainfrom
feature/AIDE-100-worktree-commit

Conversation

@chandlerhuff

Copy link
Copy Markdown
Member

Summary

Adds the ability to commit worktree changes directly from the UI, the agent tool system, and as a workflow step. A new worktree.commit agent job stages changes and creates a Git commit on the agent, respecting the repository's effective signing configuration. The branch also surfaces the build agent next to build configuration, replaces the standalone latest-build buttons with a consolidated action menu, adds Agent and Worktree columns to the workflow runs table, and makes long worktree/agent names wrap instead of truncating.

Changes

  • Worktree commit agent job: new worktree.commit job kind with strict payload validation (worktreeCommitJobPayload) and a handler that stages all changes or an exact list of paths. Partial commits reset the index first so unselected changes stay untouched, and the handler verifies staged content exists before committing.
  • Commit signing awareness: worktree inspection now reads commit.gpgsign and exposes commitSigningEnabled on WorktreeDetail; commits follow effective Git config when the signed option is omitted, with --gpg-sign/--no-gpg-sign applied explicitly.
  • Commit UI dialog: the worktree menu gains a Commit action with a dialog to enter the commit message, toggle signing, choose stage-all vs. selecting individual changed paths, and submit via a new commitWorktree GraphQL mutation (idempotent via requestId).
  • Workflow step + agent tool: new WORKTREE_COMMIT workflow step and commit_worktree built-in agent tool, both dispatched through the same job pipeline and refreshing worktree context on completion.
  • Build agent display: Start Build dialog now fetches and shows the codebase's agent; the latest build row's View/Rebuild actions are consolidated into a single dropdown (rebuilt as a reusable useRebuildBuild hook).
  • Workflow runs table: replaces the Generation column with Agent and Worktree columns linking to the respective pages; runAgent resolves the snapshotted agent from session data with a fallback to the worktree's current owner for older runs.
  • Wrapping instead of truncation: long agent names, worktree branches, bundle IDs, and commit subjects now wrap (break-words/whitespace-normal) with title tooltips instead of being truncated, in commands, workflows, build, and worktree detail views.

Tests

  • Control-agent handler test verifies partial commits include only selected paths and preserve other changes.
  • Component tests cover the commit dialog, consolidated latest-build menu, workflow run agent/worktree links, and wrapping behavior.
  • Workflows service tests cover agent resolution from session data and legacy fallback.

Ticket: AIDE-100

- Display the codebase's build agent in the start build dialog
- Move View build and Rebuild into a dropdown menu on the latest build row
- Extract useRebuildBuild hook from RebuildButton for reuse
- Wrap long names/bundle IDs in the export settings form
- Add agent strings to locale files
Add the ability to commit worktree changes from the worktrees UI, agent tool, and workflow step. Stages either all changes or an exact set of selected paths, supports signed commits (following effective git config by default), and returns the resulting commit.
Replace the generation column with linked agent and worktree columns,
resolving the agent from the session snapshot with a fallback to the
worktree owner for older runs. Search now covers worktree and agent
fields, and long agent names and commit subjects wrap instead of
truncating.
The worktree cell in the commands table used truncate, cutting off long
branch names. Replace it with whitespace-normal/break-words so full names
remain visible, and add a title attribute for the full path on hover.
@chandlerhuff chandlerhuff self-assigned this Aug 3, 2026
Add a PULL operation that fast-forwards to the branch upstream (no
merge-or-rebase surprises), surfaced as a Pull button on the worktree
row. Rework the row's actions: New Session and New Plan links pass the
worktree to the run start page, which preselects it and carries its
ticket key over; destructive and secondary operations (force push,
reset, stash, stage all) move into a More actions menu, and Open Editor
moves there too. Replace free-text operation schemas with enums so
callers see the supported operations. On mobile, the worktree picker
becomes a dialog, and sidebar footer links close the navigation sheet.

Also make screenshot captures deterministic: skip sidebar usage
collection (seeded summary renders instead of queued ccusage jobs),
stub the worktree-detail checkout inspection, pin the build-data
collection to the seeded finished scan, and seed that collection's
fixture data.
Break the monolithic worktrees.test.ts into focused suites for inventory, move, sync, watch, and auto-sync, and extract shared repository setup into worktree-fixtures.ts.
Add an overlapScope setting (WORKTREE or GLOBAL) that controls which runs
an overlap policy is measured against. Worktree scope keeps each worktree's
runs in their own queue so worktrees never wait on each other; global scope
counts every run of the workflow across worktrees. Defaults to WORKTREE, and
exports taken before the setting existed import based on exclusiveWorktree.
Give the workflow settings dialog more room with sm:max-w-2xl so its fields don't wrap awkwardly.

Also make the hidden worktrees dialog test route mock responses by GraphQL operation instead of call order, so the queued 'once' responses can't land on the runs timer request.
Simplify the workflow detail page by dropping the inline help
paragraphs now that the settings dialog provides the guidance,
and tighten the badge layout accordingly.
- Preselect only available worktrees from the run URL and disable unavailable ones
- Disable new session/plan actions for unavailable worktrees on the worktrees page
- Keep APNs alert payloads within the 4096-byte limit by truncating fields
- Mask device tokens in GraphQL and scope device status updates to the exact token
- Project commit job results into the worktree inventory
@chandlerhuff
chandlerhuff merged commit 23ff913 into main Aug 3, 2026
3 checks passed
@chandlerhuff
chandlerhuff deleted the feature/AIDE-100-worktree-commit branch August 3, 2026 22:55
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