|
|
||
|---|---|---|
| build | init | |
| lib | init | |
| res | init | |
| src | init | |
| tools | init | |
| .gitignore | init | |
| build.zig | init | |
| build.zig.zon | init | |
| LICENSE | init | |
| README.md | init | |
Plainview - A native Git desktop client written in Zig.
Feature set
- Repository status and syntax-highlighted diffs
- File, bulk, and hunk staging and unstaging
- Commit and amend
- Local branches, checkout, rename, and deletion
- Remotes and upstream configuration
- Fetch, merge-based pull, push, and force-with-lease
- Stash save, apply, pop, and drop
- Conflict marking, ours/theirs resolution, and merge abort confirmation
- Searchable commit history with refs and stash previews
- Clone and repository initialization
- HTTPS credentials and SSH remotes
Requirements and source builds
Use Zig 0.17.0-dev.342+761809e79 exactly. Source builds are supported on current macOS, Windows, and Linux systems with Metal on macOS or Vulkan on Windows/Linux, plus the platform development tools required by the dependencies.
zig build run
Official binaries are planned for macOS and Windows only. Linux users must build from source.
From Windows, request an unsigned local package explicitly:
zig build package -Doptimize=ReleaseSafe -Dwindows_unsigned_package=true
From macOS or Linux, Windows packages default to unsigned and require no PowerShell or Windows SDK tools:
zig build package -Dtarget=x86_64-windows-gnu -Doptimize=ReleaseSafe
The host still needs glslc to compile the Vulkan shaders.
For a local ad-hoc signed macOS package:
zig build package -Doptimize=ReleaseSafe -Dmacos_local_package=true
Known limitations
- Pull fast-forwards when possible and otherwise creates a merge. Rebase-configured and fast-forward-only pulls that Plainview cannot honor are refused explicitly.
- Linked worktrees are not fully watched. Changes made through another linked worktree may require using the manual refresh action.
- Linux has no persistent credential store. HTTPS credentials remain in memory only for the current process.
- SSH uses the system SSH executable and its normal host-key checking and agent/configuration behavior. Plainview does not manage multiple SSH accounts.
- Submodules and Git LFS pointers are displayed as ordinary repository content; lifecycle management is not implemented.
- Hooks are detected for commit, merge, and push operations, but are not executed; affected operations are refused and must be performed with Git externally.
- Tag lifecycle actions, rebase, cherry-pick, revert, signed commits, advanced conflict editing, a commit graph, and multiple-account SSH configuration are not implemented.
- Failed clones are retained for inspection. Plainview offers removal only when it created the destination directory itself.
Application data and credentials
Plainview stores state.bin and credential metadata under the platform user-data directory in plainview-git:
- macOS:
~/Library/Application Support/plainview-git - Windows:
%APPDATA%\plainview-git - Linux:
$XDG_DATA_HOME/plainview-git, normally~/.local/share/plainview-git
On macOS, the encryption key for saved HTTPS credentials is stored in Keychain. On Windows it is protected with DPAPI. Linux does not persist credentials. Remote URLs shown in the UI have URL user information redacted, and HTTPS credentials are never supplied after a cross-origin redirect.
Plainview is licensed under the MIT License.