Skip to content

devaryakjha/bonsai

Repository files navigation

Bonsai worktree topology logo Bonsai worktree topology logo

Bonsai

A native macOS Git client, built in the open as a free alternative to Fork.

Status · Install · Highlights · Build · Contributing

Bonsai product screenshot showing history, split diff, and repository sidebar Bonsai product screenshot showing history, split diff, and repository sidebar

Status

Bonsai is under highly active development. The v0 app surface is implemented, and the first GitHub release contains a Developer ID signed and notarized macOS archive.

The v0 goal is practical feature parity with Fork's public macOS feature set: repository management, commit history, staging, rich unified and split diffs, branch/tag/remote workflows, stashes, merge/rebase/cherry-pick/revert, submodules, reflog recovery, file history, blame, conflict assistance, Git-flow, Git LFS, GPG signing, and provider notifications.

Install

Download the latest notarized macOS disk image from GitHub Releases. Open the DMG, then drag Bonsai.app to the Applications shortcut.

For v0.1.0, the released assets are:

The release manifest records the build number, source commit, archive size, SHA-256, signing kind, team identifier, and notarization state.

Highlights

  • Native SwiftUI macOS app, packaged from SwiftPM.
  • Split and unified diff views with Git diff algorithm controls.
  • Commit history with graph lanes, search, changed-file inspection, and revision actions.
  • Working tree staging, unstaging, patch copy, discard, ignore, and conflict flows.
  • Branches, tags, remotes, worktrees, submodules, stashes, Git LFS, and GitHub repository/notification workflows.
  • Spec-driven development: every meaningful feature lands with a focused spec in Specs/.

Build

Requirements:

  • macOS 14 or newer
  • Xcode command line tools
  • Swift 5.9 or newer

Build and launch Bonsai:

make run

Build, launch, and verify that the app process is running:

make run-verify

Build and validate a release-style app bundle without Apple credentials:

make release-verify

Export the fallback .icns from the canonical Icon Composer document:

make app-icon

Run the large repository performance smoke:

make perf

Check local distribution credential readiness:

make release-doctor
make release-check-credentials
make release-github-doctor
make release-secret-template
make release-secrets-dry-run
make release-runner-workflow
make release-runner

The credential checks are expected to fail on machines without a Developer ID Application certificate and a valid notarytool profile. The workflow runner check only verifies the no-secret Jarvis toolchain required by GitHub Actions. Maintainer release setup is documented in Documentation/ReleaseChecklist.md, Documentation/ReleasePackaging.md, and Documentation/GitHubReleaseSetup.md. The manual GitHub Release workflow defaults to a Jarvis dry run that builds and verifies the credential-free archive without entering the protected release environment or reading Apple release secrets.

Run the standard validation gates before submitting changes:

make validate
make run-verify
make release-verify
make release-verify-archive
make release-verify-artifacts

Development

Bonsai is developed spec-first. Start with the relevant document in Specs/, keep implementation slices small, and commit checkpoints as work lands. Pull requests run on the Jarvis self-hosted macOS ARM64 runner for shell syntax, swift test, the large-repository performance smoke, and the credential-free release bundle, archive, and artifact verifiers.

Useful project paths:

  • Sources/Bonsai/App - app entry point, commands, and scenes
  • Sources/Bonsai/Views - native macOS SwiftUI interface
  • Sources/Bonsai/Stores - observable app state and Git operation flow
  • Sources/Bonsai/Services - Git, GitHub, and process execution services
  • Sources/Bonsai/Support - parsers, rendering helpers, launchers, and policies
  • Tests/BonsaiTests - focused parser, command, workflow, and integration tests
  • Documentation/ReleasePackaging.md - release packaging, signing, notarization, and artifact verification workflow
  • Documentation/ReleaseChecklist.md - first public release checklist
  • VERSION - bundle marketing version used by package scripts

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request, and keep UI changes aligned with the interface standards and existing macOS conventions.

Security

See SECURITY.md for supported versions and vulnerability reporting guidance.

License

MIT. See LICENSE.

About

Native macOS Git client

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors