Skip to content

JuriKiin/Via

Repository files navigation

Via Logo

Via

A lightweight git UI with an embedded terminal — for people who want to live in the terminal but still get visual help when it matters.

Via Interface

Philosophy

Via is built on a simple principle: the terminal is the action surface; the UI is for visualization, situational awareness, and frictionless transfer of text into the terminal.

That means Via deliberately doesn't ship buttons for commit, push, rebase, squash, etc. Where another GUI would do something for you, Via either shows you the state behind it or pre-fills the terminal with the matching command for you to review and run yourself. The result is a tool that augments your terminal workflow instead of replacing it — and helps you build muscle memory for git itself rather than dependence on a GUI.

Features

Live working tree

  • Real-time diff panel that auto-collapses when your tree is clean, giving the terminal more room
  • Branch indicator with ↑N ↓M ahead/behind your upstream, plus a muted ● local badge for branches with no upstream and a ⚠ upstream gone badge after PR-cleanup deletes
  • Background git fetch --prune every two minutes (with GIT_TERMINAL_PROMPT=0 so it fails fast on auth-required remotes instead of hanging)
  • Pop-out diff window for big-screen review — opens in a separate Electron window that stays in sync with the main view

History (search + browse, in one place)

  • Paginated commit log of the current branch — or all branches via a toggle
  • Collapsible filters on top: file chips, date range, quick filters (24h / 3d / 1w / 2w / 1m / 3m); auto-applied with a small debounce
  • Ref decoration as small badges (HEAD → branch, tag: v1.0, plain branches)
  • PR/issue linkifier: #123 and owner/repo#456 references in commit messages become clickable GitHub links
  • Click any commit → its full diff opens in a modal with collapsible per-file sections

Inspect & recover

  • git blame viewer — pick any tracked file, get a per-line view of who last touched it (follows renames automatically); click a line to view that commit's diff. Right-click a changed file in the diff panel to jump straight in.

Blame Viewer

  • Stashes & Logs — list git stash entries and the last 200 reflog entries. Each row has compact action buttons (Apply ▶ / Pop ▶ / Drop ▶ / Reset to here ▶) that pre-fill the matching command in the terminal — they never auto-execute, so you always review and hit Enter yourself.

Stashes and Logs

Send to terminal (⌘+click)

Hold Cmd and click on:

  • Any command in the Git Reference cheat sheet
  • Any commit hash in History (full 40-char SHA gets sent, even when only 8 chars are shown)
  • Any file path in the diff panel
  • Any stash ref or reflog ref

…and Via inserts the text into your active terminal with a trailing space. You finish typing or hit Enter to run.

Git Reference cheat sheet — Cmd+click any command to send it to your terminal

Snippets

Save frequently used terminal commands as snippets — run them in the active tab or a new one, with optional auto-run on insert. Pin up to eight snippets to a radial wheel that pops up when you tap Ctrl.

Polish

  • Custom themes with built-in presets and a hex-based custom editor; themes are picked up by the pop-out diff window automatically
  • Collapsible icon rail — the sidebar collapses (Cmd+M) to a 48px rail with all repos as letter-icons and every tool as an icon; instant tooltips on hover
  • In-app changelog viewer with the version highlighted, plus links to the GitHub Releases and raw CHANGELOG.md
  • Right-click context menus on repos, branches (with delete + local-only / local + remote dialog), and files
  • Auto-updates from GitHub Releases on app launch

Install from DMG

  1. Download the latest .dmg from Releases
  2. Open the .dmg and drag Via to your Applications folder
  3. Launch Via from Applications

macOS Gatekeeper warning

Via is open source and not signed with an Apple Developer certificate, so macOS will block the first launch. To fix this, run the following after installing:

xattr -cr /Applications/Via.app

Or: System Settings > Privacy & Security, scroll down, and click Open Anyway next to the Via warning.

Build from Source

Requires Node.js (v18+) and git.

# Clone the repo
git clone https://github.com/JuriKiin/Via.git
cd Via

# Install dependencies
npm install

# Build the .dmg and .app
npm run build

The built Via.dmg (installer) and Via.app will be in dist/.

To run the .app directly:

open dist/mac-*/Via.app

Development

npm install
npm start

This runs Electron directly for fast iteration. The dock icon will show "Electron" instead of "Via" in dev mode — this is normal.

Keyboard Shortcuts

Shortcut Action
Cmd+M Toggle sidebar (icon rail)
Cmd+T Open terminal
Cmd+N New terminal tab
Cmd+F Open History (search & browse)
Cmd+P Open repository
Tap Ctrl Show snippet wheel
Cmd+click Send command/hash/path to terminal
Esc Close modal / popup / snippet wheel

Changelog

See CHANGELOG.md or browse Releases. The changelog is also available inside the app under the Changelog entry in the sidebar.

License

ISC

About

Via is an open source git UI designed to help developers feel more comfortable with using terminal commands, without sacrificing the niceties of a git UI

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors