Shape

Shaping is how you organize your work. You can reshape changes at any time — it's an everyday operation in VisualJJ.

New change

Click the location icon on a change to start new work on top of it — this is how you pick where in the tree your next change goes. You can also right-click and select New Change Here.

Once you're there, just edit files — VisualJJ captures your modifications automatically, no staging needed.

Edit a change

Double-click any in-progress change to edit it — yours, a teammate's, or one created by an agent. Your working directory switches to that change, and any edits you make become part of it. You can also right-click and select Edit This Change.

Rebase

Drag a change onto another change to rebase it. The dragged change becomes a child of the drop target.

To reorder a change within its stack, hold Alt (Option on Mac) before dragging.

To update your work with the latest main, right-click and select Rebase on Main.

Split

Split breaks a change into smaller pieces.

By file: Right-click a file and select Split Into New Change to move it out. Or drag files between changes to move them directly.

By lines: Right-click a change and select Split... to open the split view, then select which lines to move.

Squash

Squash combines a change with its parent. Click the Squash popup button on the change, or right-click and select Squash.

Use this to fold a small fix into the change it belongs with.

Abandon

Abandon removes a change from the tree. Right-click and select Abandon.

To abandon an entire subtree, hold Alt (Option on Mac) or Shift before opening the context menu.

Use this for work you don't want to keep — experiments, dead ends, or changes you're discarding.

Revert

Revert creates a new change that undoes a previous one. The original change stays in history.

Use this when a change has already shipped to main and you need to undo it.

Duplicate

Duplicate creates a copy of a change. Use this to try a different approach while keeping the original.