Concepts
The tree
VisualJJ shows your project as a tree. Main runs along the left — the shared code that everyone agrees on. Your changes branch off it. Click any change to see what it contains. Double-click to edit it.
That's the whole picture: main on the left, your work in progress branching off to the right.
Your work in progress is flexible
In Git, once you commit, changing it feels risky — interactive rebase, amend, force-push. In VisualJJ, your in-progress work stays malleable:
- Split a large change into smaller, focused pieces
- Squash a small fix into the change it belongs with
- Drag a change onto a different parent to reorder
- Drag files between changes to move them where they belong
- Double-click any in-progress change to jump in and edit it — including earlier ones in your stack or a teammate's work
This is called shaping. It's an everyday operation, not something scary. Reshape as much as you want — you can go back with undo.
The workflow
Three verbs cover everything:
- Shape — edit, split, combine, reorder your changes (details)
- Share — make your work visible to others. Creates a request — what GitHub calls a PR and GitLab calls an MR (details)
- Ship — land a request onto main. Done (details)
Working solo: shape → ship.
Working with a team: shape → share → review → iterate → ship.
Teams
With VisualJJ Pro, your tree stays up to date automatically. When teammates ship to main, you see their changes. On Free, click Fetch to refresh. If your work overlaps with theirs, VisualJJ marks the conflict and helps you resolve it.
Double-click a teammate's change to start editing it — VisualJJ handles the setup underneath.