lazyfossil

A lazygit-inspired terminal UI for Fossil SCM.
Project goals
- Fast terminal workflow for Fossil checkouts
- Working tree and history browsing in one UI
- Commit subsets of files without a staging area
- Small, practical MVP first; polish later
Features
Repository browsing
- Fossil checkout detection
- Working tree file list
- Diff / details pane
- Timeline / history view
- File-history timeline for selected path
- Hidden-file listing (
extras --dotfiles) - Keyboard and mouse navigation
Commit and sync flow
- Temporary commit selection with
Space - Commit selected files, current file, or all files
- Extra-file commit support
- Ignore-file editing via
.fossil-settings/ignore-glob - Sync with remote via
p/P - Inline commit and ignore prompts
- Command logging to
fossil-debug.log - Binary file handling before commit via
binary-glob
Preview and UI polish
- Binary preview fallback with friendly notice
- Tab-expanded text preview (e.g. Makefiles)
- Footer/input UX improvements
- Reusable ASCII logo text asset
Project and release polish
- Project logo asset and README branding
- GitHub Actions release workflow fix for Windows executable naming
- README credits section
- Cargo package/versioning/release housekeeping
- Additional test coverage for parsing, selection, and prompts
Commit flow
Fossil does not use a staging area. Instead, lazyfossil builds commit commands like:
Extra files are added automatically before commit when needed.
Binary files are handled by setting:
Roadmap
Done
- Working tree MVP
- History timeline basics
- Temporary selection-based commit flow
- Inline commit message prompt
- Ignore-file support
- Sync support
- Binary preview fallback
Next
- Commit details and file history in the history pane
- Footer/status layout polish
- Better mouse interactions and scrolling
Build
Run
Versioning
This project follows semantic versioning: MAJOR.MINOR.PATCH.
Current version: 0.3.3.
Credits
pi.dev
Pi provides the agent harness used to shape and iterate on this project. Its tooling made it possible to refine the TUI, validate changes, and keep the implementation moving quickly.
crates.io/crates/lazyfossil
The crate listing is the distribution point for the Rust application, making the project available to the wider Rust ecosystem and simplifying installation and release management.
emojicombos.com/lazyfossil
This source provided the project logo artwork used in the README and assets, helping give lazyfossil a recognizable visual identity.