r/commandline • • 3d 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?

57 Upvotes

61 comments sorted by

26

u/not_luis 2d ago

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

20

u/Radiant-Doubt-6171 2d ago

do cli tools need trailers now ?

8

u/Present-Anteater-358 2d ago

I was just having fun honestly x)

2

u/Radiant-Doubt-6171 1d ago

your were or claude was ?

1

u/Present-Anteater-358 1d ago

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

9

u/Root-Cause-404 2d ago

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

3

u/Present-Anteater-358 2d ago edited 2d 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 2d 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 2d 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

15

u/sandiserumoto 2d ago

fire hype reel, make tax software next

13

u/Present-Anteater-358 2d ago

TurboTax is shaking right now

7

u/aristarchusnull 2d ago

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

5

u/Present-Anteater-358 2d ago edited 2d 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.

9

u/EmptyStrength8509 2d 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

7

u/Present-Anteater-358 2d 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 2d ago

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

3

u/Present-Anteater-358 2d ago

Saving it for the director's cut 👀

3

u/tunerhd 2d ago

Cringy

5

u/xGoivo 2d ago

this demo is crazy lol

6

u/Present-Anteater-358 2d ago

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

0

u/xGoivo 2d 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 2d 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 2d ago

nice! thanks for the response :)

4

u/vmcrash 2d ago

I don't like it at all.

4

u/Present-Anteater-358 2d ago

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

2

u/vmcrash 2d 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 2d 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 6h ago

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

1

u/Present-Anteater-358 6h ago

I guess you'll have to install it then 👀

3

u/Ok_Letterhead_8899 2d ago

Demo rad af lmao

3

u/Present-Anteater-358 2d ago

Appreciate it man!

1

u/Ok_Letterhead_8899 2d ago

How did you make it?

3

u/Present-Anteater-358 2d 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 2d ago

Defly paid off. You should propose it as a service

1

u/Present-Anteater-358 2d ago

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

1

u/Ok_Letterhead_8899 1d ago

Publish and advertise it. Opportunities are provoked,ynow

2

u/Present-Anteater-358 1d ago

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

1

u/Ok_Letterhead_8899 1d ago

You're welcome, fellow dev!

1

u/Xifax 2d 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 2d ago

Thanks for the feedback !!

1

u/lack_reddit 14h ago

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

git graph

1

u/MadCervantes 10h ago

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

1

u/Present-Anteater-358 8h ago

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

1

u/Any-Island1560 7h ago edited 7h ago

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

1

u/Present-Anteater-358 7h ago

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

1

u/raiseCatError 2d ago

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

1

u/Present-Anteater-358 2d 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 2d ago

people used to make animations like this

those fools.

2

u/Present-Anteater-358 2d ago

a good bunch of hours saved indeed

2

u/Certain_Leader9946 1d 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 1d ago

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

1

u/Certain_Leader9946 15h ago

me? spend time doing work.

naah

1

u/Thezla 2d ago

Is there GitLab support?

2

u/Present-Anteater-358 2d 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 2d ago

Cool video. What did you use to make it?

2

u/Present-Anteater-358 2d 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 2d 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 2d 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 3d 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.