23 comments

[ 1.7 ms ] story [ 18.1 ms ] thread
Hi HN, I've been building Ziggity, a keyboard-driven terminal UI for Git. It's inspired by lazygit (which I used daily), but written from scratch in Zig rather than being a port.

Why another one? Two reasons, honestly. There were a few areas of lazygit I wanted to improve on for my own workflow, and I wanted a real project to build in Zig, which is genuinely powerful and fast, and a joy once it clicks. It compiles to a single small static binary with explicit memory ownership and no libgit2, it just shells out to the `git` you already have. The UI is built on libvaxis. And I let myself add a bit of sugar along the way, because a tool you stare at all day might as well be pleasant.

A few things that are a bit different from lazygit: - A divergence view + status-coloured commit hashes so ahead/behind commits stand out at a glance - Independent drill-downs in the Branches/Commits panels (deliberate, not a port artifact) - Line level staging, interactive rebase, custom patch building, bisect, arbitrary-ref diffing

It's honest about its stage: v0.3.0, macOS/Linux/Windows builds, MIT. The Windows build compiles and libvaxis supports it, but I haven't smoke-tested it on real hardware yet. There's an about screen with a spinning ASCII donut, because why not.

Install: `brew install simoarpe/ziggity/ziggity`, or grab a static binary from the releases page.

Repo: https://github.com/simoarpe/ziggity

I'd genuinely appreciate feedback, especially on the UX and on the Zig code if you're into that. It's a spare time project, so bug reports and "this feels wrong" notes are welcome.

I can't really tell why this comment got flagged, so I've vouched it.

Maybe I've missed some context

Neat project, but the README would benefit from a human author. I can tell what you prompted by the way the README is worded. It should tell me more about what this project solves. I don't care that it uses idiomatic zig. Why should I use this instead of lazygit?
Yes, from the README, it's not clear why the author would maintain a project with main features being saving 10Mb of ram&storage and 10ms startup time... followed by a wall of hard-to-read AI-generated text.
"Why maintain it" is easy: I use it every day and it's faster than the alternatives.

If the docs are hard to read, PRs are welcome. But if "a wall of text" is the strongest critique here, the code's probably fine.

To restate my initial point, I don't think the speed is important for tools like `lazygit`. Even on the huge company-wide monorepos it's not a problem, as there are other ways to handle it. For now, you're selling Ziggity to the Zig bros.

> But if "a wall of text" is the strongest critique here

Well, it is a blocker, since you haven't convinced me to try it. The only feature I find useful is the text selection, and to find it I had to dig through the "wall of text".

You have 10s to tell me what my pain point is and how you solve it, before I move on. I understand you're proud of the speed gains. But as a potential (typical) customer, I'm telling you it's not the problem I have.

Anyways, good luck with your project!

Maybe can emphasize yourself and call it LazyZig or something with the lazy moniker.
I wonder when is the 900,000 lines single commit coming for Rust rewrite
I’m such a CLANKER hater now, I want to know if this was written by agents or not. If written by agents, I don’t want anything to do with it. I only want human written software, even LLM autocomplete seems a bridge too far.
Honest feedback:

This is AI generated TUI slop made with claude.

I've been seeing a sad trend of these things being built with AI with no care and will be just abandoned in less than a month.

Why should I use this when I can use lazygit which is more popular and has been around and battle tested for years?

Very cool, but if I'm prompting / looping an AI agent as my main development process, what is the use case here? I feel the biggest help would be to make Reviewing PRs from the terminal easier, I care less about commit logs and status.
This is huge. I've always wanted to use Git in the terminal but never been happy with the underlying language that other TUIs were written in. Now that I know that I'm using developer-managed memory I can be much more comfortable and confident changing between branches, pushing, and pulling, and even merging code. Thanks Simone!
I know what these words mean, but if I didn't this would be a whole lot of nonsense.
i appreciate that it’s not more rust slop, but i never understood the need for a git frontend.
I like the Zig+Git+TTY portmanteau.
I like it but the donut animation is not needed, overbuilding gives AI slop vibes

I would love to use it without gimmicks.

If Quagmire were in charge of naming things.
i've always found magit better than any opinionated git terminal UI. Including LazyGit.

With Claude, i find myself reaching for Magit even less.

Need to change the logo to one of a guy with a massive chin and a creepy stare.
just use lazygit, i don't see why i would care if it's zig/go/rust or whatever compiled language
Serious suggestion, as we’re going to get many such submissions in the future.

Can we have an honor code policy of no LLM agents used in development if you want to present on Hacker News.

The way I think of it is if we have a forum for painters and then someone just keeps sharing GenAI paintings that he did not actually paint. It’s ridiculous, I want to look at stuff humans painted, not AI.

Yes software does have use, and LLM companies have managed to make it so that anyone can build useful software for themselves if they want. So what’s left, is software as an art to appreciate, and I can’t appreciate AI generated art or software whether it is “good”, “functional”, “idiomatic”, “elegant” whatever. We still watch humans play chess, not computers play against each other though sometimes they can be interesting.

I’m not a “Luddite”, I’m unhappy with the way American AI companies have gone about this, if they released open weights it would be better.

But AI fundamentally changes the meaning of developing software, the way a compiler doesn’t. There’s no building software once you’re using LLM, just as there’s no playing chess when you have a chess engine to help you. And maybe AI code will not look like slop in the future, doesn’t matter, I still don’t really care if an AI built it.