Skip to content

Releases: zangjiucheng/GitCat

GitCat nightly (1.0.1-nightly.20260804.3ac3afe)

Choose a tag to compare

@github-actions github-actions released this 04 Aug 14:41

Unstable daily build (macOS Apple Silicon) with verbose Trace logging. Opt in via Settings → Updates → “Use nightly builds”; you can switch back to the latest stable release at any time.

nightly-sha: 3ac3afe

GitCat v1.0.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 13:11

GitCat is a cozy, safety-first desktop Git client (Tauri 2 + Rust + Svelte 5). This is the first stable release: leaving the 0.9.x beta line behind.

The idea behind it is simple. Every operation that touches your history should be reversible. A Safety Manager snapshots your repo before every mutation, so a global Undo (⌘Z) is always one keystroke away, and Undo is itself undoable.

Highlights

  • Safety first. Snapshot before every mutation, global Undo that's itself undoable, reflog rescue, and fsck-based recovery of dangling commits no branch or reflog points to anymore. Genuinely irreversible actions (force push, hard discard, filter-repo) are gated behind a typed danger-confirm.
  • A fast commit graph. git2 reads plus a hand-tuned Rust swimlane layout, streamed onto a virtualized canvas. No hard cap on history depth, newest commits paint almost instantly, and scrolling stays smooth with readable text even on a 150k-commit repo.
  • The whole everyday workflow. Stage by file, hunk, or individual line; commit, discard, stash; branch and tag actions right on the graph; fetch / pull / push with an explicit merge-or-rebase choice; cherry-pick, merge, and revert, all backed by a real 3-way conflict resolver.
  • The advanced stuff, made safe. Linear and interactive rebase (a drag-to-reorder planner before it touches your history), squash-merge, git bisect, submodules you can open and manage like their own repo, patch export/apply, and a git-filter-repo wizard with a full backup/restore net.
  • Meets you where you work. A ⌘K command palette, vim-style navigation, per-file history and blame with rename-following, pluggable external diff/merge tools, WSL repositories, and an in-app terminal.
  • Tama. GitCat's Safety Manager is a cat with eight expressions wired to real moments: curious while you search, thinking hard mid-rebase, alarmed right before something irreversible, celebrating once it's safely done.
  • Yours alone. The app never connects to any AI or analytics service. AI-assisted features, if you want them, run as external commands you configure yourself.

What's new since v0.9.8

  • Repository Summary no longer stalls first-open on large repos. The one-time auto-summary now skips busy repos so opening stays snappy; the full summary is still available on demand from ⌘K / Tools.
  • Fixed a Linux AppImage launch crash (EGL_BAD_PARAMETER) by pinning the bundled WebKitGTK to a working version.
  • Hardened the production Content-Security-Policy, and fixed the inline-style regression that hardening caused on Windows/WebView2.
  • Nix support. A flake.nix devShell for NixOS (Rust, WebKitGTK, pnpm, and friends) plus a proper package output on Linux.
  • Website and docs. A silent product demo, an expanded guide for opening unsigned builds (including modern macOS), plus SECURITY.md and structured issue forms.

Install

Grab your platform's installer from the assets below, or see the install guide for the full walkthrough.

  • macOS (Apple Silicon / Intel): .dmg. Unsigned, so right-click the app → Open the first time (on macOS Sequoia, allow it from System Settings → Privacy & Security).
  • Windows (x64 / arm64): .msi or -setup.exe. On the SmartScreen prompt, click More info → Run anyway.
  • Linux (x64 / arm64): .AppImage (chmod +x it first), .deb, or .rpm.

GitCat is an unsigned open-source build for now, so your OS will warn about an unidentified developer. Signed macOS and Windows builds are on the roadmap.


Full changelog: v0.9.8...v1.0.0

CI build dependency — WebKitGTK 2.44.3 (jammy)

Choose a tag to compare

Not a GitCat release. These are the Ubuntu 22.04 (jammy) WebKitGTK/JavaScriptCore 2.44.3 .deb packages, mirrored here because GitHub Actions runners can't reach launchpad.net and the Ubuntu apt archive no longer carries 2.44.x. release.yml downloads them to pin WebKitGTK below the 2.46+ EGL_BAD_PARAMETER regression that crashes the Linux AppImage at launch. Sourced from Launchpad (Canonical). Safe to ignore / do not delete while release.yml references this tag.

GitCat v0.9.8

Choose a tag to compare

@github-actions github-actions released this 31 Jul 13:50

Highlights

A submodule-navigation overhaul: move freely between a superproject and its submodules — up, down, or sideways to a sibling — from a new strip under the topbar, and switch back to a repo you were just on instantly.

✨ Features

  • Submodule navigator strip. A slim bar under the topbar shows a breadcrumb of where you are (root › child › …, each crumb a click to jump to that ancestor) plus the current level's siblings as one-click tabs, each with a status dot. A 🌳 button opens a popover with the full recursive submodule tree — every submodule at every depth — so you can jump straight to any of them. Reaching a sibling no longer means going all the way back and re-opening it.
  • Auto-detect on open. Opening a repo now works out where it sits in any submodule hierarchy: open a submodule folder directly (picker / dashboard / deep-link) and its parent and siblings show up automatically, the same as if you'd navigated into it in-app. The nav state refreshes on every switch, and the same submodule registered at two different paths is handled as two distinct instances with their own refs.
  • Instant switch-back (warm-graph cache). The last few fully-loaded repo graphs are kept in memory, so bouncing between a superproject and its submodules (or between siblings) restores the graph instantly — at the same scroll position — instead of re-streaming the whole history each time. A deliberate memory-for-speed trade; it reconciles in the background so a repo changed while you were away still updates.

🐛 Fixes & polish

  • Removed the old "← Back to " topbar button. The new breadcrumb jumps to any ancestor in one click, so the one-level-back button was redundant.

Full Changelog: v0.9.7...v0.9.8


See the assets below for your platform's installer.

GitCat v0.9.7

Choose a tag to compare

@github-actions github-actions released this 30 Jul 17:33

Highlights

Two ways to tidy up this release: reorder a commit's crowded labels in the graph so a hidden branch or tag can be brought into view, and discard uncommitted changes — one file or the whole tree — always recoverably.

✨ Features

  • Reorder crowded commit labels. When a commit has more branches/tags than fit the gutter, the extras used to just vanish and you were stuck with whatever came first. Now a small +N chip appears after the last label that fits — click it to spin that commit's labels and cycle a hidden one to the front. There's also a new Settings → Graph → "When labels don't fit, show first" preference (Tags or Branches) to pick which kind wins the visible slot.
  • Clearer label tooltip. Hovering a commit's labels now lists one ref per line, each with a colour-coded kind (branch / tag / current / remote) and the one currently on top in bold — instead of the old cramped single line that ran everything together.
  • Discard uncommitted changes. A new "Discard all" button in the Unstaged header clears the whole working tree (staged, unstaged, and untracked) — but recoverably: it's saved to a stash you can restore if it was a mistake. Any single file can also be discarded from a right-click → "Discard changes" menu, for when the row is too far to drag.

🐛 Fixes & polish

  • Undo's dirty-tree warning now uses GitCat's own in-app Tama dialog instead of the OS system dialog, so it looks and behaves like the rest of the app.
  • Nightly channel now reliably attaches its build artifacts to each nightly release. The pipeline previously created the release and tag but uploaded nothing.

Full Changelog: v0.9.6...v0.9.7


See the assets below for your platform's installer.

GitCat v0.9.6

Choose a tag to compare

@github-actions github-actions released this 29 Jul 14:44

Highlights

Fixes the blank graph when opening a repo in a new window, and adds an optional nightly-builds channel for anyone who wants the newest changes early.

🐛 Fixes

  • New windows now render the commit graph. Opening a repo in a new window (a separate GitCat process) left the graph blank while everything else worked. The graph loader was delivering its data over a mechanism that didn't reach a second app instance's window; it now uses the same channel-safe path everything else does, so the graph fills in normally.

✨ Features

  • Optional nightly builds (Settings → Updates → "Use nightly builds"). Off by default. When enabled, the in-app updater follows a separate daily build channel with much more verbose logging — useful for trying new changes early or helping diagnose an issue. You can switch back to the latest stable release at any time; the nightly channel is completely separate from stable and never affects it unless you opt in. Nightly builds are macOS Apple Silicon only for now.

Full Changelog: v0.9.5...v0.9.6


See the assets below for your platform's installer.

GitCat v0.9.5

Choose a tag to compare

@github-actions github-actions released this 29 Jul 05:02

Highlights

The important fix here: GitCat no longer freezes. 0.9.4 fixed one cause of the UI hang; this release fixes the rest of them.

🐛 Fixes

  • No more UI freezes. 0.9.4 fixed the freeze caused by the graph loader emitting events from a background thread, but the same underlying bug lived in every other background event GitCat sends — most visibly a fetch/pull streaming its progress while the file-watcher was busy. Any of them could hold an internal webview lock while a foreground action needed it, and the two would wait on each other forever. All of those events (fetch/pull progress, bisect progress, the repo-change watcher, and terminal output) are now delivered on the main thread, where that deadlock can't happen. This was pinned down from a live stack trace of a frozen build.

✨ Tweaks

  • The sidebar's Local and Remote sections start collapsed, matching Tags and the other groups, so the sidebar opens compact. A click still expands them.

Full Changelog: v0.9.4...v0.9.5


See the assets below for your platform's installer.

GitCat v0.9.4

Choose a tag to compare

@github-actions github-actions released this 29 Jul 02:09

Highlights

A stability release fixing two bugs that could make GitCat feel broken: a UI freeze on opening a repository, and Undo silently doing nothing when you have uncommitted changes.

🐛 Fixes

  • The UI no longer freezes when opening a repository. The incremental graph load streamed each batch of commits with a global Tauri event, emitted from a background thread — which holds an internal webview lock while waiting on the main thread. If the main thread was simultaneously handling one of the several IPC calls a repo-open fires (dashboard status, snapshots, watcher, bisect state), the two waited on each other forever and the whole window hung. The graph now streams over a dedicated ipc::Channel that doesn't take that lock, so it can't deadlock this way. (This one was pinned down by 0.9.3's new crash log plus a live stack sample.)
  • Undo no longer silently does nothing when the working tree is dirty. With uncommitted changes, Undo can't run (it resets the working tree), so it offered to stash → undo → put your changes back — but that prompt used a synchronous window.confirm(), which in the packaged app can return "no" without ever showing a dialog when the UI thread is busy. So Undo just appeared dead: no dialog, no message. It now uses a reliable native dialog, and always shows a message if you decline, so it can never be silent again.
  • Quieter release logs. The log the app writes (~/Library/Logs/com.jiucheng.gitcat/ on macOS) was flooded with one line per internal IPC request, which drowned anything useful. Those noisy webview-internal lines are now held back, so the log stays a readable record if something goes wrong.

Full Changelog: v0.9.3...v0.9.4


See the assets below for your platform's installer.

GitCat v0.9.3

Choose a tag to compare

@github-actions github-actions released this 29 Jul 01:13

Highlights

Mostly a Windows/WSL-hardening release, plus cherry-pick a merge commit. On WSL repos, working-tree operations now run the distro's own git so they stop churning line endings and file permissions; a slow fetch/pull shows a live progress modal; and release builds finally keep a log so a crash can actually be diagnosed.

✨ Features

  • Cherry-pick a merge commit. Dragging a merge onto another commit (or right-clicking it) used to be rejected — git refuses a merge without -m, since a merge has two parents and it needs to know which side's changes to bring in. Now GitCat opens a small chooser: pick which parent is the mainline (parent 1 = the branch merged into, the usual choice; parent 2 = the branch merged in) and it runs cherry-pick -m <n>. It's on both the drag gesture and the right-click Cherry-pick onto HEAD menu — handy when the commit and HEAD are too far apart on the graph to drag between.
  • Live progress for fetch and pull. A slow sync — a large remote, or a WSL repo where every git call crosses the wsl.exe boundary — used to show only a disabled "Fetching…" button. Now a modal streams git's own progress ("remote: Counting objects…", "Receiving objects: 42% (…)", "Resolving deltas…") so you can see what it's doing. It's dismissable (the op keeps running), and a quick success closes itself.
  • One-click ollama default finds ollama even when it isn't on the app's PATH. On Windows especially, ollama's installer adds ollama.exe to your PATH but an already-running app never sees the update. GitCat now also probes the standard install locations, so the "Use ollama default" button works without a restart. If it's found at a fixed path, the pre-filled command uses that path so it still runs after you Save.

🐛 Fixes

  • WSL: operations no longer churn line endings or file permissions. Only fetch/pull/push ran through WSL's own git before; everything that writes the working tree (checkout, reset, discard, stage, stash, Undo, merge, cherry-pick, revert, bisect, git am) ran Windows git against the \\wsl.localhost\ share. With the common Windows core.autocrlf=true, that rewrote the whole tree as CRLF (every file showing as changed) and dropped Unix executable bits (scripts becoming "permission denied" on Linux). Those operations now run the distro's own git, so line endings and modes are handled natively. (Interactive rebase -i on WSL is the one piece still to come.)
  • Ctrl+O opens the repositories dashboard on Windows. WebView2 was swallowing the shortcut before the menu could fire; a frontend fallback now opens it, matching ⌘O on macOS.
  • Release builds keep a crash log. A shipped build previously kept no logs and had no panic hook, so a crash left nothing to diagnose. Now a Rust panic is logged (PANIC at file:line) and release builds write a small, size-capped log to your app log directory.

Full Changelog: v0.9.2...v0.9.3


See the assets below for your platform's installer.

GitCat v0.9.2

Choose a tag to compare

@github-actions github-actions released this 28 Jul 18:55

Highlights

A batch of workflow touches on top of 0.9.1: stage or unstage a whole folder at once, a Select all / Deselect all toggle for per-line staging, a force-push option from the branch menu, a smarter Undo that can stash your dirty tree first, a one-click ollama default for commit-message generation, and a couple of Windows / refresh fixes.

✨ Features

  • Stage / unstage a whole folder. The changes list groups files under their folder; each folder row now has its own Stage / Unstage buttons, so you can stage an entire directory (src/…) in one click instead of file by file. It scopes strictly to that folder's contents and leaves sibling root files untouched.
  • Select all / Deselect all for per-line staging. The per-line diff bar used to appear only after you'd already checked a line, so there was no way to grab every hunk at once or clear a selection short of unchecking each box. A Select all toggle now shows whenever the open diff has any changed rows, flipping to Deselect all once anything is selected.
  • Force push, with a warning. The branch right-click menu now offers a force push for the current branch. It spells out that it rewrites the remote history and can drop others' commits, and asks you to confirm before it runs.
  • Undo can stash a dirty tree first. A plain Undo refuses to run when you have uncommitted changes, which made it feel broken mid-work. When the working tree is dirty, Undo now offers to stash → undo → pop, so it can rewind the history and re-apply your in-progress changes on top instead of turning you away.
  • One-click ollama default for commit messages. If you have ollama installed, External Tools can fill in a working git diff --staged | ollama run … command for message generation with one click. It only prefills the field — you review it and Save — so GitCat still never runs anything you didn't configure yourself. You can edit or replace it freely.
  • A submodule row is badged in the changes list. A dirty submodule shows a small submodule tag so it's obvious at a glance that the change is a submodule pointer, not an ordinary file edit.
  • The commit message box remembers its height. Drag the commit section taller or shorter and it stays that way next time.

🐛 Fixes

  • Ctrl+, opens Settings on Windows. The shortcut was swallowed on Windows; it now opens Settings the same way ⌘, does on macOS.
  • Refresh always shows an externally-created branch. Checking out a new branch outside the app (while it was closed) could leave the branch missing from the graph even after a manual Refresh. Refresh now forces a full re-walk, so branches created behind GitCat's back always appear.

Full Changelog: v0.9.1...v0.9.2


See the assets below for your platform's installer.