Skip to content

Fretwire 0.6.0

Choose a tag to compare

@olegklimakov olegklimakov released this 25 Aug 18:35

The sixth beta is about the history row as a place to act from. Two things that
lived somewhere else moved onto the commit itself: the force push that every
rewrite in its menu warns will be needed, and the worktree already checked out
at that commit — a checkout that costs nothing, because the directory is
standing there on it. And a linked worktree stops posing as a project of its
own: its tab nests under the project it belongs to, smaller, with a branch
glyph, and it is the repository that goes into recents.

New

  • Force push from the history — a commit's menu offers four ways to rewrite
    what is under it, and each one says the same thing afterwards: this will need
    a force push. The push itself was a trip away, to the toolbar or the remote
    hub. Force Push <branch> now sits on the tip of any branch whose
    same-named upstream is still there, one entry per branch — several
    upstream-tracking branches on one tip is rare enough that a submenu would be
    noise. It pushes --force-with-lease with a fully qualified refspec, so it
    works from any checkout rather than only when that branch is the one you are
    standing on: rewriting a branch you are not on and pushing it is one menu now,
    not a checkout in between.
  • The same warning everywhere — force push confirms through one sheet, and
    the toolbar's private confirmation dialog is gone. The button, the remote hub
    and the commit row ask the question in the same words, name the same branch,
    and warn in the same breath that the push aborts if the remote has commits you
    haven't fetched.
  • Open the worktree sitting on a commit — when another linked worktree is
    checked out at the commit under the cursor, Open Worktree <name> jumps
    to its tab. It is the only checkout in the menu that touches no git at all —
    the working tree already exists, on that commit — so it stays available while
    an operation is running, alongside the copy items. Offered for a worktree
    holding a branch and for one on a detached HEAD, and only while its directory
    is still on disk.
  • Worktrees live inside their project — a linked worktree used to open as
    though it were an unrelated repository: its own entry in recents, its own icon
    in the rail, no sign of what it belonged to. Now the recents entry records the
    repository, a worktree tab inserts next to its project's tab — a project
    opened later adopts the worktree tabs already there — and the rail draws it
    smaller and indented, with a branch glyph in the corner and a tooltip that
    says which project it is a worktree of. The relationship is read at open time
    from --git-common-dir and never stored, so a worktree removed behind the
    app's back leaves nothing stale behind, and a submodule or a bare repository
    is not mistaken for one.

Requirements

  • macOS 14 or later.
  • A git — whichever comes first on your login shell's PATH, else Apple's. With
    none installed at all, the Welcome screen says so once, with the command that
    fixes it.

Not here yet

  • A command palette.
  • Dragging a commit onto a branch. The rebase editor covers reordering a range;
    history by drag-and-drop is a separate decision, and it hasn't been made.

During the beta

Free, for any use. Licensing starts at 1.0: free for personal projects, paid per
seat for commercial use — see the EULA.

The app updates itself — each update is checked against a signature before it is
applied. Settings ▸ Updates decides how much of that happens on its own. Bug
reports and requests go to the issue tracker.