Skip to content

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 04 Sep 00:42
· 256 commits to main since this release
Immutable release. Only release title and notes can be modified.

jj-stack 0.1.3 focuses on making changes made on GitHub safe to recover from. It can now finish partial stack merges, bring reviewer commits into your local stack, and explain when a PR branch changed without silently overwriting work.

Breaking changes

  • jj-stack now requires jj 0.45.1 or newer, so that it can make use of the new converge command in jj. Check jj --version and upgrade jj before installing this release if needed.
  • If a submit fails after you edit its pull request descriptions, retry with jj-stack submit --resume-edit <saved-file>. The old jj-stack submit --edit <saved-file> form no longer works; --edit by itself always starts a new editing session.
  • If you validate the JSON from view or list, accept the new branch_moved status. It means a PR branch contains commits that do not match either your local change or the version you last submitted. The commented status has been removed from the schema because jj-stack never produced it.

Highlights

  • When a PR branch is updated on GitHub by a reviewer, another checkout, or another tool, jj-stack view and jj-stack list now show that clearly. To keep the new commits, run jj-stack checkout --pull-request <pull-request> and follow the printed jj converge or jj squash command. To discard them and publish your local version, run jj-stack relink --replace-remote <pull-request> <change-id>, then submit the stack again.
  • sync can now finish after GitHub merges only the bottom of a stack, even if you have continued editing the pull requests above it. It rebases those local changes onto the new trunk and updates the remaining pull requests without discarding your edits.
  • You can now finish a merge by naming any pull request in the stack: jj-stack sync --pull-request <number-or-url>. jj-stack finds and syncs the complete local stack, including when that pull request has already merged.

Fixes

  • sync now recognizes more common post-merge states, including a merged change that became empty after you rebased it yourself and a partial stack merge followed by newer commits on trunk. It also checks whether the remaining PR branches changed on GitHub before changing your local history.
  • cleanup no longer deletes a PR branch that another open or reopenable pull request still uses as its base. When you use cleanup --close, jj-stack first retargets the pull request to trunk so deleting its branch does not make it impossible to reopen.
  • submit and relink now stop before acting on an abandoned change, a change with no content, or a change with no description. The error points to the change and tells you whether to select a visible change, add or abandon content, or run jj describe.
  • In a fresh clone, checkout --pull-request no longer fails because jj treats fetched PR branches as immutable. doctor --fix also removes those bookmarks and any leftovers from an interrupted checkout or sync.
  • A stack whose top change is being edited in another jj workspace is no longer mistaken for a shorter stack, preventing a submit from dropping that top change from the GitHub stack.
  • Very long change titles no longer make submit fail with an invalid branch name. If you customize jj-stack.branch_prefix, invalid values now fail early with a useful error, and changing the prefix does not prevent updates to pull requests created with the old one.
  • If GitHub rejects a label or reviewer after creating a pull request, jj-stack keeps the pull request linked to its local change so a normal retry can finish the submit. Pull request descriptions based on templates or multiline change descriptions also update correctly again.
  • merge now honors jj-stack.merge_method when GitHub cannot report which merge methods the repository allows. Stacks based directly on a merge commit at trunk can also be submitted, merged, and synced again.
  • GitHub failures now include the useful part of GitHub's response and distinguish rate limits from authentication problems. A broken stack or missing pull request that you are not working with no longer prevents jj-stack from finding unrelated valid stacks.

Full changelog