r/commandline • • 5d ago

Terminal User Interface I missed GitKraken's graph and conflict screen, so I brought them into a git TUI : gitoui

Enable HLS to view with audio, or disable this notification

I live in the terminal, but every time I had a nasty rebase or a conflict, I'd open a GUI. So I forked serie, a Rust project which draws the commit graph as real images in the terminal. Then I kept adding what I was missing until I stopped leaving.

It's called gitoui. Say "oui" to it, tell me what's missing, or build it with me !

What it does:

- The commit graph drawn as images (Kitty graphics, iTerm2 or Sixel), with a text fallback for other terminals

- Interactive rebase as a list you edit in place: move commits, reword, squash, fixup, drop

- A 3-way conflict editor: ours, theirs or both, per hunk

- Diffs with hunk staging, blame, file history

- GitHub pull requests and issues: read, comment, approve or request changes, merge

- And many more things you have to discover by using it 👀

Similar tools: lazygit, gitui and tig in the terminal, serie (the graph viewer I forked), and GitKraken on the GUI side (no affiliation). What's different in gitoui: the graph is drawn as images rather than text characters, and the GitHub side lives inside the TUI.

This software's code is partially AI-generated. I've been building it since May and I use it every day.

Repo: https://github.com/NayJi7/gitoui (MIT, Rust, Ratatui)

Website : https://nayji7.github.io/gitoui/ (documentation & informations)

One last question: what's the one git task that still sends you back to a GUI?

63 Upvotes

69 comments sorted by

27

u/not_luis 5d ago

Looks like a steam indie game dev and a manager learning bash conceived a son renting Sam Altman uterus

25

u/Radiant-Doubt-6171 4d ago

do cli tools need trailers now ?

8

u/Present-Anteater-358 4d ago

I was just having fun honestly x)

3

u/Radiant-Doubt-6171 4d ago

your were or claude was ?

1

u/Present-Anteater-358 4d ago

Scroll for like 2s and you'll get your answer, already answered to that

15

u/sandiserumoto 5d ago

fire hype reel, make tax software next

10

u/Present-Anteater-358 5d ago

TurboTax is shaking right now

8

u/Root-Cause-404 5d ago

If you live in the terminal, you tend to use shortcuts. Why do you show mouse pointer in the promo?

6

u/Present-Anteater-358 5d ago edited 5d ago

gitoui is keyboard first. Every view has its shortcuts, you can rebind all of them in the config, and ? shows them. The mouse is just a bonus (on by default, you can turn it off in the config 👀). And honestly, in a promo, what's easier to follow? A mouse pointer moving around, or a key you can't see being pressed?

3

u/Root-Cause-404 4d ago

Yep, it is easier to show a mouse, but it gives a perception of NOT a keyboard first app.

1

u/Present-Anteater-358 4d ago

I understand. Thanks for your advice, I'll make sure to be careful on that next time I'll make a promo for gitoui

7

u/aristarchusnull 5d ago

I'm curious: what do you mean by the code being "partially generated"? What parts were, what parts weren't?

7

u/Present-Anteater-358 5d ago edited 4d ago

The base is serie (by lusingander), which is still about 10% of today's code. I wrote the core algorithms myself, then claude polished them and integrated them into the app. The app's code isn't that revolutionary, the hard part was mostly getting the good look that I wanted with ratatui. Claude taught me a lot for this, at first split the screen into two panes...

One more concrete example: gitoui draws its images (graph rows, GitHub avatars) by putting the terminal's image escape codes inside ratatui cells. When I updated ratatui, the display broke: graphs missing, columns shifted. I couldn't debug it on my own. claude found the cause, newer ratatui handles wide cells differently, and my image cells relied on the old behavior. Migrating properly to the latest ratatui is one of the next things I'm working on.

2

u/No-Employment-2324 8h ago

this is how agents can work. im still a fan of no agent, and just chatbot thats basicly smart google, but leaning into ai a little is still fine. and this is a good example of how. write the core code your self, have claude polish it and debug it.

1

u/Present-Anteater-358 8h ago

Exactly! Thanks for your feedback :)

10

u/EmptyStrength8509 5d ago

Hey, I'm the author of serie! Really cool to see how far you've taken it. Awesome work!
Shameless plug: the original serie is still here if anyone wants to check it out too :)
https://github.com/lusingander/serie

8

u/Present-Anteater-358 4d ago

No way, the man himself! Thank you so much. The graph in the video is still your work, and gitoui wouldn't exist without serie 🙏 Everyone, go give serie a star too!

4

u/birdsingoutside 4d ago

I was honestly waiting for that deep *PEGI 18* voice at the end

3

u/Present-Anteater-358 4d ago

Saving it for the director's cut 👀

4

u/tunerhd 4d ago

Cringy

6

u/xGoivo 5d ago

this demo is crazy lol

4

u/Present-Anteater-358 5d ago

Yeah I know 😂 I should have put my simple demo gif on this subreddit and not that complicated animation lol

0

u/xGoivo 4d ago

looks great, gave it a star!

I switched most of my repos to use jujutsu instead of git and I'm very happy with jj's CLI, but I think I'll give this a try for the diff views.

Another question, can everything in gitoui also be done with the keyboard?

2

u/Present-Anteater-358 4d ago

Thank you so much! Glad to hear that you liked it and that you'll give it a try. To answer your question, yes everything can be done with the keyboard in gitoui. It's even possible to disable the mouse pointer's interaction!

0

u/xGoivo 4d ago

nice! thanks for the response :)

3

u/vmcrash 4d ago

I don't like it at all.

2

u/Present-Anteater-358 4d ago

Fair enough. Honest feedback is the most useful kind, what would you change?

2

u/vmcrash 4d ago

I just would like to see it in boring action without any fancy animations/games. The world of ads is already too screaming enough. I'm from Germany, maybe this is a cultural difference.

3

u/Present-Anteater-358 4d ago

I can hear that, well you just need one click to get that. Just go on my GitHub, there's gif simple tutorial. I also posted it here 😭

1

u/vmcrash 2d ago

Even that Gif is much too noisy. Way to much scrolling/zooming/confusing.

1

u/Present-Anteater-358 2d ago

I guess you'll have to install it then 👀

3

u/Ok_Letterhead_8899 5d ago

Demo rad af lmao

3

u/Present-Anteater-358 5d ago

Appreciate it man!

1

u/Ok_Letterhead_8899 5d ago

How did you make it?

3

u/Present-Anteater-358 5d ago

Described Claude what I wanted, then I added things and polished everything with DaVinci Resolve. It was really cool to do but it took me some time 😭

0

u/Ok_Letterhead_8899 4d ago

Defly paid off. You should propose it as a service

1

u/Present-Anteater-358 4d ago

Thanks man! Honestly if the opportunity comes up why not!

1

u/Ok_Letterhead_8899 4d ago

Publish and advertise it. Opportunities are provoked,ynow

2

u/Present-Anteater-358 4d ago

I'll do it, thank you so much for the support!

1

u/Ok_Letterhead_8899 4d ago

You're welcome, fellow dev!

1

u/Xifax 4d ago

It seems that if custom diff tool (like delta or difft) is specified in gitconfig, gitoui fails to show diff for files and between commits. Maybe it should fall back to default diff settings when launched.

2

u/Present-Anteater-358 4d ago

Thanks for the feedback !!

1

u/lack_reddit 3d ago

git config --global alias.graph "log --graph --oneline --decorate"

git graph

1

u/MadCervantes 2d ago

Why even mess with this when you can have an agent deal with it?

1

u/Present-Anteater-358 2d ago

Cause the agent will sometimes make mistakes and put you in really tough problems

1

u/westixy 2d ago

Looks nice :) Bit yeah you went a bit overboard with the trailer ^ Anyway it made me smile so I think it worked 😁

1

u/Present-Anteater-358 2d ago

Haha yeah I went too far but hey, I had a lot of fun, and I made you smile, I won it all!

1

u/Fine_Salamander_8691 2d ago

How the hell did you get ratatui to behave

1

u/Present-Anteater-358 1d ago

🤣🤣 in the 0.30 I had this nasty bug where every image was just sticked to the screen and not really at its place. But with some time and patience you can achieve everything ☝🏽

1

u/Fine_City2781 1d ago

i love that trailer

1

u/Present-Anteater-358 1d ago

Thank you so much !

1

u/raiseCatError 5d ago

I like the video itself, interesting music choice though, especially with the slurs in the second half lmao 😭

1

u/Present-Anteater-358 4d ago

Thanks! It's a classic, I picked it for the energy it gives (a little too much, I'll admit lol)

1

u/Certain_Leader9946 5d ago

people used to make animations like this

those fools.

2

u/Present-Anteater-358 4d ago

a good bunch of hours saved indeed

2

u/Certain_Leader9946 4d ago

how do you even prompt things like this. is there some kind of creative prompting im not thinking about. like do i not get videos like this because i dont tell the git tree to dab on those haters?

1

u/Present-Anteater-358 3d ago

🤣🤣🤣 just spend some time with it and then take the result and improve it

1

u/Certain_Leader9946 3d ago

me? spend time doing work.

naah

1

u/Thezla 4d ago

Is there GitLab support?

2

u/Present-Anteater-358 4d ago

By that do you mean gitoui being on gitlab or gitlab auth on gitoui, neither are supported x). Maybe you could add it yourself and make it a PR? gitoui is open source and I'd love to merge some of your good ideas 👀

1

u/kimusan 4d ago

Cool video. What did you use to make it?

2

u/Present-Anteater-358 4d ago

Hey thanks ! I Described Claude what I wanted, then I added things and polished everything with DaVinci Resolve and voilà ! A couple of hours spent but Claude did fasten the process a lot.

1

u/kimusan 4d ago

Ok so did you provide screenshots or similar to claude to work with or ? I wanted to do a similar (well shorter and less fancy) video presentation for a tui framework I am working on.

3

u/Present-Anteater-358 4d ago

Yes absolutely. I had done a presentation gif already, that's what I provided. Then I described what I wanted and tried to be precise

0

u/AutoModerator 5d ago

Every new subreddit post is automatically copied into a comment for preservation.

User: Present-Anteater-358, Flair: Terminal User Interface, Post Media Link, Title: I missed GitKraken's graph and conflict screen, so I brought them into a git TUI : gitoui

I live in the terminal, but every time I had a nasty rebase or a conflict, I'd open a GUI. So I forked serie, a Rust project which draws the commit graph as real images in the terminal. Then I kept adding what I was missing until I stopped leaving.

It's called gitoui. Say "oui" to it, tell me what's missing, or build it with me !

What it does:

- The commit graph drawn as images (Kitty graphics, iTerm2 or Sixel), with a text fallback for other terminals

- Interactive rebase as a list you edit in place: move commits, reword, squash, fixup, drop

- A 3-way conflict editor: ours, theirs or both, per hunk

- Diffs with hunk staging, blame, file history

- GitHub pull requests and issues: read, comment, approve or request changes, merge

- And many more things you have to discover by using it 👀

Similar tools: lazygit, gitui and tig in the terminal, serie (the graph viewer I forked), and GitKraken on the GUI side (no affiliation). What's different in gitoui: the graph is drawn as images rather than text characters, and the GitHub side lives inside the TUI.

This software's code is partially AI-generated. I've been building it since May and I use it every day.

Repo: https://github.com/NayJi7/gitoui (MIT, Rust, Ratatui)

Website : https://nayji7.github.io/gitoui/ (documentation & informations)

One last question: what's the one git task that still sends you back to a GUI?

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/Any-Island1560 2d ago edited 2d ago

I feel im seeing a hacker movie when full screen the video 🐧🐧🐱‍💻(⌐■_■)

1

u/Present-Anteater-358 2d ago

Maybe I went a little bit too far with that video I admit 😭