Changelog

Release notes. For the full commit history, see GitHub.

  • Syntax highlighting on every code surface — the unified diff, split view, the inline commit diff, blame, the file preview, the repo browser's diff pane and all three panes of the merge resolver. Word-level highlighting inside a changed line composes with it rather than fighting it, and each theme carries its own syntax palette, so light themes are calibrated for a light canvas and switching mode never re-tokenizes.
  • Large diffs stay responsive — diff rows are windowed, so opening a thousand-line file mounts a screenful instead of the whole thing. `F7` hunk navigation scrolls by computed offset, so it still reaches a hunk that isn't mounted yet.
  • Interactive rebase understands merge commits. A merge in range used to fail partway through and leave the branch half-rewritten; now the plan is validated before the repository is touched, and merge rows are badged with a warning strip saying what will happen. Flatten (the default, and git's own) drops the merge and replays its side branch linearly, or keeps it as one ordinary commit; Preserve recreates the merges, the equivalent of `git rebase --rebase-merges`, and states its limitations up front.
  • A rebase now survives quitting the app. The replay runs on a detached HEAD and the branch moves exactly once, on completion, with the operation mirrored to disk and `ORIG_HEAD` re-asserted at every step — so Continue and Abort still work after a restart, and `git reset --hard ORIG_HEAD` remains a real escape hatch.
  • Conflicts are a state the app announces, not a tab you visit. Whenever a merge, rebase or cherry-pick is in progress, a bar under the titlebar names the operation and branch, counts what's left, shows the rebase step, and offers one verb — Resolve conflicts, then Finalize or Continue — plus a confirmed Abort. The old Conflicts screen is gone; the resolver window gained a conflicted-file sidebar and now asks before you leave a file with unapplied work.
  • History scope that means something — All / Mine walk every branch, This branch walks HEAD, replacing a client-side approximation. Squash and fixup run from History in place, with a prefilled, editable message built from every commit being squashed; no detour through the plan screen. The rebase plan reorders by drag, and the app opens on History.
  • UI zoom on `⌘=` / `⌘-` / `⌘0`, persisted; a customizable "you are here" HEAD indicator (edge bar, row highlight, both, or graph marker only); and entering a screen focuses its main pane, so the first keystroke lands where you're looking.
  • Fixes — a `.deb` install would have been handed an AppImage as its update payload once Linux self-update opens up, and the update panel now explains itself to `.deb` users instead of dead-ending; continue and abort work for a rebase git owns on disk, which previously abandoned queued steps or left you detached mid-rebase; a branch tip was truncated to seven characters, so the HEAD marker never drew and the ancestry filter silently matched nothing; rebase operations read the displayed log rather than HEAD's ancestry, so squashing two commits could produce three; the split view's two columns drifted apart on any hunk mixing removals and additions; re-selecting the current screen stranded keyboard focus; and the shell no longer side-scrolls.
  • In-app updates — Windows `.msi` and Linux `.AppImage` installs now download, verify and install updates in place, then relaunch. macOS and `.deb` are notify-only: they point at the release or `brew upgrade` rather than stepping on a package manager's bookkeeping.
  • Clone and create repositories — clone from a URL with live progress, or initialise a new repository, from the Welcome screen, the command palette, or `⌘⇧O` / `⌘⇧N`.
  • Authenticated remotes — fetch, pull, push and clone against private remotes. The first attempt stays prompt-less so an existing credential helper or SSH agent simply answers; only if that fails are you asked, and the operation is retried. "Remember" hands the credential to your own git credential helper, and only once it has actually worked.
  • Line-level staging — click or shift-click individual lines in a hunk and stage, unstage or discard just those. Plus word-level highlighting within a changed line, tri-state staging checkboxes on files and folders in the tree, and an ignore-whitespace toggle on every diff surface.
  • Commit signing — sign commits with GPG or SSH and see a verification badge on signed commits. The commit box is now a single field (subject and body, the shape git stores), Amend loads the previous message, and you can override the author or add `Co-Authored-By` trailers.
  • Rewritten commit graph — proper lane colouring, crossing edges, a HEAD marker and accessible labelling. History pages in as you scroll, and both the log and the file tree are virtualized, so large repositories stay responsive.
  • History upgrades — an inline commit diff that opens in place without switching screens, multi-select for a combined diff / squash / cherry-pick, and content search (`content:` / `contains:`) alongside author, path, date and SHA filters.
  • Editable branch tracking — set or change a branch's upstream from the Branches inspector or its context menu; a first push of an untracked branch establishes tracking instead of leaving it dangling.
  • Polish — light themes are properly calibrated (diff colours, graph lanes, pills and shadows no longer keep a dark calibration over a light canvas), per-file-type icons throughout, in-app dialogs with real danger styling and type-the-name confirmation for destructive actions, bundled Inter + JetBrains Mono, loading skeletons, and find-in-tree with `⌘⇧F`.
  • Repositories on a Windows drive under WSL (`/mnt/c/…`) open — they tripped git's dubious-ownership check and refused outright; you now get an explanation and a one-click way to trust the path.
  • Fixes, from a full review of everything since 0.0.7 — discarding a conflicted file deleted it instead of restoring the conflict; pull with auto-stash could leave your uncommitted work in a stash it never popped or mentioned; staging part of a file could then stage the wrong lines, because the diff pane kept showing the pre-stage version; whole branch lanes could vanish from the paginated log; staging a hunk or lines of a brand-new file failed outright; the commit summary counted unstaged edits toward the commit; discarding an untracked file silently did nothing; UI density skipped some row surfaces; a signed commit with an expired key read as unsigned. Embedded repositories are now detected as data rather than guessed from the path, and stay out of batch operations that would write an unresolvable gitlink.
  • Rider-style merge conflict resolver — a dedicated resolver window with a three-pane diff3 layout (ours · editable result · theirs). Accept ours / theirs / both per conflict from the gutter or the keyboard (`F7` / `⇧F7` to navigate, `⌘1/2/3` to pick, `⌘↵` to apply and auto-advance through conflicted files); manual edits and CRLF are preserved, with a chooser for binary / deleted-side conflicts. Open it from the Conflict screen.
  • App logo on the Welcome screen and titlebar, with themeable logo colors — every built-in theme carries its own logo palette, and the theme editor exposes the head/bill fills.
  • Branded macOS installer — the `.dmg` now opens to a classic drag-to-Applications layout with artwork styled to match the site.
  • Fixes — the branch/ref picker scrolls within the popover instead of overflowing the viewport.
  • Keyboard navigation — a full keymap system with a Rider-style default (Classic preset available), type-to-jump speed-search, commit chords, `F7` / `⇧F7` hunk navigation, spatial `Alt+Arrow` pane focus, and a `?` cheat sheet.
  • `pgit` command-line launcher — open a repo from the terminal with `pgit [subcommand] [path]`; forwards into a running instance; installable shim.
  • Ref-scoped history — browse the commit log of any branch, tag, or revspec and cherry-pick from unmerged refs via the History ref selector.
  • Command palette upgrades — an actions catalog, frecency ranking, drill-in steps, and type-filter chips (⌘P / Ctrl+P).
  • Multi-file selection — select several files in the commit panel or repo browser and stage / unstage / discard them from the context menu.
  • Settings — configurable diff context lines and UI density; non-functional toggles removed.
  • Fixes — interactive-rebase conflict resume now completes, and aborting no longer discards a resolved commit; the palette type chips run the highlighted row; palette Pull honours your pull-mode setting and tracking branch; the commit shortcut no longer double-commits on key-repeat; History selection resets when a filter shrinks the list.
  • Windows `.msi` now builds — added an `.ico` to the icon set so the Windows bundler stops failing.
  • Multi-platform release assets: macOS universal `.dmg`, Windows x64 `.msi`, Linux amd64 `.deb` + `.AppImage`.
  • First release built for all three platforms via CI — macOS `.dmg`, Windows `.msi`, Linux `.deb` + `.AppImage`.
  • Validates the Windows and Linux build jobs; assets attach automatically once the release workflow completes.
  • Recent commit messages — a "Recent" button in the commit panel refills the message from your recent commit subjects/bodies (newest-first, de-duplicated, skips merges).
  • Sign-off (-s) toggle — appends a Signed-off-by trailer from your committer identity with full `git commit -s` semantics (idempotent, correct blank-line separation, git-accurate trailer-key rule); applied on normal and amend commits. Preference persists and stays in sync with Settings.
  • Browse the repo tree at any revision — type a revspec (SHA, branch, tag, HEAD~2, …) or quick-pick a branch/tag to list the full file tree and view file contents as they were then, with syntax highlighting and binary-blob handling.
  • Commit / log search in History — filter by message, author, SHA prefix, date range, and path, with free-text qualifiers (author: / path: / sha: / since: / until: / message:). Backend-filtered over a revwalk; results render through the commit graph.
  • Command palette / fuzzy finder — open with ⌘P / Ctrl+P to jump to any branch, file, recent commit, or app command from one overlay.
  • Fuzzy matching ranks consecutive runs, word boundaries, and camelCase; keyboard-first navigation (↑/↓, Enter) with match highlighting and a trapped focus ring.
  • Selecting a result acts on it: branches check out, files open in the diff view, commits show their diff, commands switch screens.
  • First public release of platypusgit — a dev-first git desktop app built with Tauri 2 + React.
  • Staging: stage / unstage / discard whole files and individual hunks; commit with amend and author override.
  • Diff & viewing: worktree / index / HEAD diffs, commit-to-commit diffs, line-by-line blame, repo file browser at HEAD.
  • Branches & tags: list / create / checkout / rename / delete branches; lightweight and annotated tags; push and delete tags.
  • History: commit graph layout, per-file history, reflog viewer, detached-HEAD checkout.
  • History manipulation: reset (soft / mixed / hard), cherry-pick, revert.
  • Stash: save / apply / pop / drop, and stash to a new branch.
  • Conflict resolution: 3-way sides, accept ours / theirs, external mergetool, continue / abort.
  • Interactive rebase: pick / reword / edit / squash / fixup / drop, continue / abort, rebase base picker.
  • Remotes & network: add / remove / rename / prune remotes, fetch / pull / push (with-lease and force), merge branches.
  • Centralized branch UI — titlebar branch chip + popover picker.
  • Native window titlebar with platform-aware window controls; light / dark theme.
  • Universal macOS .dmg build published via CI.