Just merged the commit graph feature branch

#Gitte

@cjk YES! this is such a key feature and many of the web forges get this wrong too. Really hope this can be ported to windows as well, I have a lot of game programming friends who would be able to use git if only one of the clients was as nice as this

@jackperkins I‘m no Windows dev. I don’t even own a Windows license. Last time I touched Windows is 13 years past. So if people want this ported to Windows, somebody else has to do it. Sorry 🫣

That said: I‘m open for MRs

@cjk oh sorry i didnt mean to imply you should do it, i know how that is for maintainers being constantly asked for huge amounts of work! I meant more that i hope one day it could be, as it doesnt seem like so much of the technology is bound to the platform?
@jackperkins yeah, that's right, it can be ported, there is nothing platform specific I am aware of. In fact, most should just work. I guess packaging is the biggest hurdle.

@cjk Thanks a lot for this. Also will it be possible to add stashes & working copy in same commit graph as well? It will be really nice.

Something like this?

@surendrajat Yes, I am planning to add something like this. However, I‘ve been working on the commit graph for a little more than two weeks, so I am not sure if it will make it into the next release
@cjk does it make sense to add a separator to the header bar? it would visually tidy up the many panels and specially the disconnected vertical separators.

@hbons The GNOME circle people want me to do this, too.

The problem I have with it is that they want me to to add a burger menu with the global actions to the left panel (because of the HIGs), and put some actions on the middle panel (e.g. push/pull/stash) and some on the right panel

And I am really not keen on that… 🫣 distributing the action buttons so much across the header bars seems not very user friendly to me.

Any because I don’t have a nice solution for that, I didn’t change it, yet

@cjk I'm not the Circle reviewer for Gitte, but imo it would not be as much distributing the actions as it would be *organizing* them!

Actions that apply to the repository as a whole make sense to have in the left sidebar since that already contains options and information that applies to the entire project. GNOME apps with sidebars have the hamburger menu in there as well since the sidebar is the only "persistent" element in this kind of app. People are already used to this from e.g. Files.

Pull/push make sense to have in the middle panel because those actions directly impact the commit graph. Actually it's where I'd expect to find those actions. And so on.

As a bonus, organizing the header bar buttons into the pane hierarchy could potentially improve support for small window sizes since you could transition to a page-based navigation structure when the window becomes too narrow to show all the panels at once. Maybe even mobile support could be possible down the line.

The commit graph looks super cool by the way! Love it ⭐

@bragefuglseth on the other hand the user now has to either guess or try which menu to open.

See the screenshot: some actions would belong to a burgen menu on the left, some in the middle (I guess? Maybe the middle wouldn't have a burger menu, not sure) and some on the right. Plus the action buttons.

You either just know which menu to open or you have to guess.

That's the reason I am not keen on this... 🫣

That said, I am open on suggestions! I don't want to be stubborn

And thank you :-)

@cjk @bragefuglseth to be fair it’s a huge menu. :)

@hbons @bragefuglseth yes 🫣

I can drop the first group (push / pull / fetch), these are remnants from a refactor where I put that into the action buttons. But the rest? I don't see other entries to drop, or am I wrong?

@cjk here's a quick attempt from my end at a 3-pane layout that enables a split headerbar and removes some items from the app menu:

- Push, pull, fetch, refresh and stash have been moved into the sidebar
- Creating tags is possible with a button in the tags list
- The whitespace in diffs option has been moved into its own menu shown above the diffs

I see that there are a lot of considerations to make when designing this kind of app though, so these changes may not be technically possible or desirable after all. But making the 3-pane layout extend to the header bar should be feasible, and go a long way in making the app more like other GNOME apps with a similar layout 😇

@bragefuglseth Wow. I really like that.

The only thing that seems odd to me are the buttons at the top. The rest is really nice.

What do you think about dropping the text (and making it a popover) and putting them on one line?

May I use this sketch?

@cjk I agree that the sidebar buttons are a little visually heavy. I'm not sure if the actions are recognizable enough with just icons though.

What about a middle ground between the previous mockup and your proposed change, where they keep their text but are made smaller and placed on one line?

You're of course free to use any of this as you wish 🙂

@bragefuglseth that looks like a really nice solution.

Thank you very much! ❤️

@cjk @bragefuglseth What an awesome community ❤️ Such a productive discussion to make the UX of free software better 😍

@bragefuglseth hm. I have another question :P

I use banners in several occasions (e.g. when a rebase is running for the continue / cancel plus a small explanatory text, or for the commit graph when it takes to long). With your layout this is not really possible, because the middle pane is to narrow. But putting the banner over both, or even all three panes would mean I have to put it above the title bar.

Alternatively I could use an overlay instead of a banner.

Do you have a better idea?

@bragefuglseth or I could put it at the bottom, full width. But ugh.
@cjk could you send a screenshot of how it looks currently?
@bragefuglseth currently resolving a conflict on work stuff. Maybe the bar at the bottom isn't that bad?
@bragefuglseth I really like that. Have a look. (caution, WIP)

@cjk @bragefuglseth

I never used gitte but I really like it visually. One idea which came to my mind: maybe the branches can be also combined into folders if someone creates "myusername/..." branches. IntelliJ does something like that