SnazzGit Svelte Themes

Snazzgit

A shiny git gui client, vibe coded in rust/tauri/svelte.

SnazzGit

A snazzy, cross-platform Git GUI client built with Tauri 2, Svelte 5, and git2.

Features

  • Commit History & Graph -- visual branch/merge graph with virtual-scrolled commit list
  • Staging Area -- stage, unstage, and discard changes with hunk-level staging and resizable split panels
  • Diff Viewer -- syntax-highlighted unified diffs with word-level inline highlighting and image diff support
  • Branch Management -- create, checkout, rename, delete, merge, rebase branches
  • Cherry-Pick -- apply individual commits onto the current branch
  • Squash -- squash a range of commits into one
  • Tag Operations -- create, delete, and push tags
  • Reset -- soft, mixed, or hard reset to any commit via context menu
  • Remote Operations -- fetch (with prune), pull, push, force push (--force-with-lease), add/remove/rename remotes
  • Stash -- save (with untracked option), apply, pop, and drop stashes
  • Blame -- per-line blame annotations
  • Search -- live search commits by message, author, or SHA (Ctrl+K)
  • File History -- view all commits that touched a specific file
  • Compare Refs -- diff between any two branches, tags, or commits
  • Reflog -- browse reflog entries with jump and cherry-pick actions
  • Gitignore -- add files, patterns, or directories to .gitignore from the context menu
  • Merge -- merge branches with conflict detection
  • Conflict Resolution -- 3-way merge editor for resolving conflicts
  • Clone -- clone repositories with progress tracking
  • Recent Repositories -- quick access to recently opened repos
  • Drag & Drop -- open repositories by dropping folders onto the window
  • File System Watching -- auto-refresh working tree status on external file changes

Theming

SnazzGit ships with 4 built-in themes -- Dark, Lollipop, Neon, and Classic -- and includes a full theme editor with live preview. Every color in the UI is driven by CSS custom properties, so you have complete control over the look and feel.

Create your own themes in the editor and they're automatically saved to ~/.config/snazzgit/themes/ as JSON, ready to share or sync across machines.

Keyboard Shortcuts

Shortcut Action
Ctrl+K Search commits
Ctrl+B New branch
Ctrl+D Compare refs
Ctrl+G Stash dialog
Ctrl+Shift+S Stage all files
Ctrl+Shift+U Unstage all files
Ctrl+Enter Commit (when in commit message box)
Ctrl+A Select all unstaged changes
Escape Close current panel / deselect

Installation

Arch Linux / CachyOS (AUR)

Install with your preferred AUR helper:

yay -S snazzgit-bin    # or snazzgit-git
paru -S snazzgit-bin   # or snazzgit-git

Building from Source

Prerequisites

Development

npm install
cargo tauri dev

Production Build

cargo tauri build

This produces platform-specific packages in src-tauri/target/release/bundle/:

  • Linux: .deb, .rpm
  • Windows: .msi, .exe (build on Windows or via CI)
  • macOS: .dmg, .app (build on macOS or via CI)

Tech Stack

Layer Technology
Backend Rust + git2
Frontend Svelte 5 (runes) + TypeScript
Styling Tailwind CSS 4 + CSS custom properties
Framework Tauri 2
IPC Tauri commands (async, via tokio::spawn_blocking)

Project Structure

src/                    # Frontend (SvelteKit)
  lib/
    components/         # UI components (commit, diff, staging, branch, etc.)
    stores/             # Svelte stores (repo state, UI state, themes)
    themes/             # Built-in theme definitions
    types/              # TypeScript type definitions
    utils/              # Tauri IPC bindings
  routes/               # SvelteKit pages
src-tauri/              # Backend (Rust)
  src/
    git/                # Pure git2 logic (no Tauri dependency)
    commands/           # Tauri IPC command handlers
packaging/              # Distribution packaging (AUR, .desktop)

Privacy

SnazzGit is a fully local application. It does not transmit any data to external servers. All git operations run locally using the bundled git2 library. Network activity only occurs for explicit user-initiated remote operations (fetch, pull, push) to repositories you have configured.

Code Signing Policy

See CODE_SIGNING.md for details on how SnazzGit releases are signed.

License

MIT

Top categories

Loading Svelte Themes