Skip to content

Releases: senseyman/mergelio

v1.4.1 - Find It, Fix It, Ship It

Choose a tag to compare

@github-actions github-actions released this 25 Aug 20:25
fc53949

What's Changed

  • Search commit content. The graph filter now searches inside diffs, not just messages and metadata: find commits that added or removed a piece of text, with an optional regular-expression mode. Results stream in while the search runs, and the filter row reports progress and an empty state.

  • Edit and copy commit messages. "Edit message…" and copy actions were added to the graph context menu and the commit details panel. HEAD is amended in place with --only, so staged changes are not swept into the amend; an older commit is reworded through an interactive rebase, and a commit that is not an ancestor of HEAD is refused. Rewriting a commit that already exists on a remote warns first, naming the branches that will need a force push.

  • Two long-standing bugs in the reword path were fixed along the way: a multi-line message split the rebase todo across lines that git read as separate instructions, and a plan spanning a merge commit left the repository mid-rebase with a detached HEAD. Rewording now preserves an existing signature instead of dropping it.

  • Rebase editor, reworked. The interactive-rebase modal now opens on a single whole-branch choice — move the commits as they are, or fold them into one — and only unfolds the per-commit table (action, drag-to-reorder, inline reword) when you ask to customize. Every action carries a plain-language description, so nobody has to already know what fixup does. Plans git would reject, such as a squash with nothing above it to squash into, are caught and explained before the rebase starts rather than failing partway through.

  • Rebase can now sign every replayed commit, and commit signatures are preserved across rebase and reword.

  • Delete remote branches. Delete a branch on the remote from its remote-tracking row, or remove a tracking branch locally and on the remote in one confirmed step.

  • Fetch no longer blocks everything else. Fetching runs in its own lane, so a fetch — including an auto-fetch tick — never blocks a commit, a branch create or a push.

  • Cancel a stuck network operation. The running operation is named in the status bar with a cancel button, so a fetch or push against a remote that stopped answering can be abandoned instead of waited out. Network commands also carry SSH connect and keepalive timeouts, so a dead host fails in seconds rather than minutes; any GIT_SSH_COMMAND or core.sshCommand you already set is kept.

  • Continue a cherry-pick or revert after conflicts. A conflicting cherry-pick or revert used to abort itself, leaving a terminal as the only way to keep the work. Both now pause into the Merge Tool the way a rebase does, and finishing there continues the sequence — including the --skip path for when the staged resolution leaves nothing to commit. A pick left paused by an earlier run is detected on open (CHERRY_PICK_HEAD / REVERT_HEAD) and stays continuable. Starting a new pick while one is paused is refused: git reports "already in progress" with the previous operation's conflicts still in the tree, which would relabel the open session with the new commit and misdirect its undo.

Full Changelog: v1.4.0...v1.4.1

Full Changelog: v1.4.1...v1.4.1

v1.4.0 - Worktrees

Choose a tag to compare

@senseyman senseyman released this 19 Aug 10:14

Git worktrees become first-class citizens: list them, create them, manage them, and open each one as its own tab.

Worktrees

  • Every linked worktree is listed in the sidebar with its branch (or short HEAD when detached), lock state, and prunable status.
  • Create a worktree on a new branch, an existing branch, or a detached head - and open it as its own tab.
  • Move, lock, unlock, and remove worktrees. Removing a worktree with uncommitted changes asks before forcing, and pruning shows exactly which stale entries would be dropped.
  • Branches already checked out in another worktree are badged in the branch list. Switching to one offers to jump to that worktree instead of failing with git's error.

Other changes

  • Commit details now show the full date and time, with the author's timezone offset.

Under the hood

  • Worktree state and filesystem watching are covered by dedicated test suites; the suite is now 1062 tests.

v1.3.0 - Project browsing and an in-app editor

Choose a tag to compare

@senseyman senseyman released this 19 Aug 10:20

A repository tab is no longer only a commit graph - it can also be a project browser with a real editor.

Project files

  • Files mode - switch a repository tab from the commit graph to a project browser and back; the choice is remembered per tab.
  • A lazy directory tree: a folder is read the first time it is opened, so a repository with a huge node_modules costs nothing until you look inside it.
  • Git context on every row - modified and untracked badges, dimmed ignored entries, and a hide-ignored toggle.
  • Editor tabs using the same editor as the diff sheet: syntax colouring, ⌘S / Ctrl+S saving, a line-number gutter, and ⌘F / Ctrl+F find and replace with a match count and a case toggle. Open files are restored on the next launch; unsaved text never is.
  • Unsaved editors are asked about once - when leaving Files mode, closing the repository tab, or quitting.
  • Right-click a row for new file, new folder, rename, delete, stage, unstage, discard, file history, and reveal in the system file manager.
  • An open file follows what happens on disk: renamed, its tab moves with it; deleted, the tab says so and saving is refused.

Security and ### stability

  • Hardened path validation - every path is checked against the opened repository before disk is touched.
  • Fixed a race in the undo stack and cleaned up leaked resources.
  • Fixed a repository reload loop and sped up slow graph reads.

v1.2.0 - Selective staging by line

Choose a tag to compare

@senseyman senseyman released this 19 Aug 10:21
  • Stage and unstage individual lines, not just whole hunks - select lines in the diff and apply exactly those.
  • Discard selected lines, including inside untracked files.
  • Reworked diff selection handling so a selection survives scrolling and view-mode changes.

v1.1.0 - File editing and remote management

Choose a tag to compare

@senseyman senseyman released this 19 Aug 10:21
  • Edit uncommitted files in place, plus a copy action for file contents and paths.
  • Add, edit, and remove remotes from the UI.
  • Added the project README.