HelgeSverre/sourcefour
HelgeSverre/sourcefour has 27 GitHub stars and 2 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-15 00:02 UTC. Last push 2026-10-22.
Gemessener Sternzuwachs
- in 24h
- 0
- in 7 days
- Verlauf wird gesammelt
- in 15 days
- Verlauf wird gesammelt
- in 1 month
- Verlauf wird gesammelt
Nettoänderungen in überlappenden Zeiträumen, keine Tagessummen. Fehlende Messwerte bleiben leer. Sterne zeigen Interesse, nicht Qualität.
Über uns
A fast, native Git history browser you launch from your terminal
EntwicklerwerkzeugeREADME.md
OriginalSourcefour
A fast, native Git history browser you launch from your terminal. Press one command inside a repository and get the useful half of SourceTree: the commit graph, refs, commit details, and diffs — nothing to configure, nothing to log into.
Built with GPUI for GPU-rendered native UI and gitoxide for reading repositories.

Install
| Platform | Installer | Package manager |
|---|---|---|
| macOS | .pkg or app .zip, universal, signed and notarized |
brew install --cask helgesverre/tap/sourcefour |
| Windows | .msi, 64-bit |
— |
| Linux | .AppImage, x86-64 |
brew install helgesverre/tap/sourcefour |
The ZIP-based cask copies the app and links its CLI without using the macOS package installer. For an install without elevation, use a writable Homebrew prefix and application directory:
mkdir -p "$HOME/Applications"
HOMEBREW_NO_SUDO=1 brew install --cask --appdir="$HOME/Applications" helgesverre/tap/sourcefour
The default /Applications also works without elevation when writable.
Migrating from the old PKG cask can require one-time administrator access to
remove its root-owned files and receipt; see the
migration and release checks.
Those links always resolve to the newest tagged release; the filenames never carry a version, which is what keeps them stable. To build from source instead:
cargo install --git https://github.com/HelgeSverre/sourcefour sourcefour
Use
sourcefour # browse the repository containing the working directory
sourcefour ~/code/foo # browse a specific repository
sourcefour --demo # browse a generated demo repository
Development
Everything runs through just; just --list
shows the recipes, grouped into run, build, check, and dist.
just run # launch the app on the current repository
just test # cargo nextest across the workspace
just check # the full pre-push gate — the same one CI runs
just package # build dist/Sourcefour.app (ad-hoc signed, local use)
The website lives in website/. Its screenshots — and the one above — are
captures of the deterministic demo fixture, regenerated with just screenshots
and never edited by hand, so they cannot claim anything the app does not do.
--scene names every view worth capturing; the script ships the subset the
website and this file use.
Releasing
CI runs format, lint, tests, and locked debug/release builds on every pull request — Linux only, to keep the bill down, since macOS and Windows minutes bill at 10x and 2x. The full three-platform matrix runs on demand from the Actions tab, and must be run before cutting a release: nothing else checks that the macOS and Windows builds still compile, and the release packages all three.
Releases are cut by cargo-dist. Pushing a version tag runs the test suite first, and only then builds anything:
just release 0.2.0
| Artifact | Built by | Notes |
|---|---|---|
| Archives, checksums, Homebrew formula | cargo-dist | macOS (both arches), Linux x86-64, Windows x64 |
| Homebrew cask | .github/workflows/release.yml |
Installs the universal app .zip using the configured appdir and exposes its CLI |
.msi |
cargo-dist + apps/sourcefour/wix/main.wxs |
Start Menu shortcut, optional PATH entry |
.pkg |
.github/workflows/macos-pkg.yml |
Universal, signed, notarized, stapled |
App .zip |
.github/workflows/macos-pkg.yml |
Same signed universal app, with its own stapled ticket, verified after extraction |
.AppImage |
.github/workflows/linux-appimage.yml |
Built on ubuntu-22.04 for a low glibc floor |
The .pkg and the .AppImage are maintained alongside the generated jobs
because cargo-dist produces neither. release.yml is hand-edited to add the
test gate, those two jobs, and the macOS cask publisher, which is why
dist-workspace.toml marks ci as allowed-dirty; rerun dist generate after
changing dist config and re-apply those edits.
Secrets this needs
| Name | Kind | What it is |
|---|---|---|
HOMEBREW_TAP_TOKEN |
secret | Fine-grained PAT on HelgeSverre/homebrew-tap, Contents: read and write |
APPLE_APPLICATION_CERTIFICATE_BASE64 / _PASSWORD |
secret | Developer ID Application certificate, base64 .p12 |
APPLE_INSTALLER_CERTIFICATE_BASE64 / _PASSWORD |
secret | Developer ID Installer certificate, base64 .p12 |
APPLE_NOTARY_KEY_BASE64 |
secret | App Store Connect API key, base64 .p8 |
APPLE_APPLICATION_SIGNING_IDENTITY, APPLE_INSTALLER_SIGNING_IDENTITY |
variable | Certificate common names |
APPLE_NOTARY_ISSUER_ID, APPLE_NOTARY_KEY_ID, APPLE_TEAM_ID |
variable | Notary and team identifiers |
The Homebrew token publishes the formula and cask; the Apple values are what
make the .pkg job run. Until they exist, a tag will build everything and then
fail at the .pkg step rather than publishing a release with a missing macOS
installer.
License
MIT.