Sharing a new Compose Desktop tool to manage local...
# feed
r
Sharing a new Compose Desktop tool to manage local git repos called GitVantage https://github.com/rocketraman/gitvantage. With AI, microservice multi-repo architectures, and open source, more and more often we developers find ourselves working with many different Git repositories simultaneously. I found myself getting lost in all my repos, forgetting about open issues/PRs, forgetting about work in progress on branches, forgetting about things I had put into the Git stash, and generally losing track of everything I had on the go. I created a Compose Desktop app that lets you load the repos you care about into a dashboard which helps you keep track of everything on the go. Don't look too closely at the code -- its almost all vibe coded and I actually haven't spent too much time looking at it myself. But for something like this, who cares as long as it works? It's all built on top of the Compose Desktop Nucleus Framework https://nucleusframework.dev/en/ by @אליהו הדס. The release artifacts include several different package formats -- I've tested RPM on Linux and DMG on Mac (note, no signed artifacts on Mac yet, will wait to see if anyone wants this). Would love to hear feedback.
u
I love seeing a Compose desktop application that opens so quickly and looks so native :) I've installed it, just opened it, but haven't tested it yet
r
Thanks for the cool framework @אליהו הדס...
🙏 1
➕ 1
u
A little dark mode would be great! I almost never use my PC in light mode.
👍 1
s
But for something like this, who cares as long as it works?
I actually do. 😅 I'd hate for my Git history to get corrupted or lost because of a subtle bug in the implementation. 👀 No offense intended, but for something this critical, I think it should still be reviewed by a human.
👍 2
I'm not at the point where I'd let AI interact with Git directly. I usually let it make the changes, review everything myself, and then commit manually. That said, I'm really interested in the workflows some people showcase on YouTube: You give an AI a spec, it generates tickets, another AI implements them and opens a PR, and then yet another agent reviews it. It all sounds fascinating, but also a bit risky. Do you work that way with AI? Do you use multiple agents?
r
No offense intended, but for something this critical, I think it should still be reviewed by a human.
@Stefan Oltmann (and @krzysztof) No offense taken, fair criticism and I thank you for it. I should have been more accurate -- the part of the code which is practically unreviewed is UI code. IMO, there is no "risk" here -- its all just display output. Its a small enough project that the AI can hold its entirety in context, and is therefore surprisingly good at making the changes I request of it. Implementing dark mode was a single prompt and took a few minutes. The code that does git operations has been reviewed and black box tested heavily. I've been actively using this tool myself for a while now. All git mutating operations are gated behind a prompt, also verified with black box testing. But I'm also going a bit further now since I see now that black box testing is not provable, nor does it prevent future problems from creeping in. I've therefore refactored the code so that all git operations are in one package, and I've added architecture tests that validate all the package layering so that we know if the architecture test passes, we can trust that all the git calling code is where it should be. Also all git operations now have unit tests attached. So now its still robots all the way down, but the robots are constrained appropriately 🙂 and its a job of a few minutes to check for anything that might corrupt your git repos for yourself or your agent -- I'd be happy to receive issue reports if you find anything amiss.
I'm not at the point where I'd let AI interact with Git directly. I usually let it make the changes, review everything myself, and then commit manually.
This project does not expose you to that workflow. In fact, the whole point of it is to help you keep track of all the changes, surface diffs easily, review logs, etc. No AI runs within the tool -- AI was only used to build it. I want to let this refactor soak for a bit before I cut a new release, but FYI!
👍 2
✅ 1
d
The 1.1.1 release text appears huge on my mac... and the plus to add new repos doesn't do anything.
r
@dave08 thanks for trying it out. Are you on a retina display? Can you send me a screenshot? Also the plus should bring up the native directory chooser dialog, and does on my Mac Mini. Can you check your Console logs or run it from the command line to surface any errors (
/Applications/GitVantage.app/Contents/MacOS/GitVantage
)? Or you could
./gradlew run
from source.
d
now it started on the retina display, when transferred to my normal wide screen, it became VERY small...
and here's when it comes up on the wide screen itself
no errors when running from command line
this is my display setup
and the dialog doesn't come up
r
@dave08 Thanks for the details. Regarding the scaling issues, 1) if you start the app on the primary display, and leave it on that display, then does the scaling looks right?, and 2) if you start it on the retina display, drag it across to your normal wide screen so it becomes small, and then resize the window, does the app scaling correct itself? Regarding the Add Repo dialog, after you click it, is the app still responsive, or does it start beeping if you try to click stuff? I'm wondering if the dialog is actually open but because of the display geometry issues, it is actually off the screen somewhere. Can you try to click "Add Repo" with the external display(s) disconnected? What MacOS version are you running? My Mac Mini on Tahoe 26.5 works fine.
@dave08 Can you also run:
Copy code
/Applications/GitVantage.app/Contents/MacOS/GitVantage --smoke-test
and show me the output? There are some tests that don't currently run on a Mac, but the output might still be useful.
d
Copy code
/Applications/GitVantage.app/Contents/MacOS/GitVantage --smoke-test
Smoke-testing the application's subsystems…
  [PASS] filesystem watcher — 3 event(s) delivered
  [PASS] filesystem watcher via symlinked path — 3 event(s) delivered
  [SKIP] XDG desktop portal (native file chooser) — not Linux
  [SKIP] FileKit XDG file chooser interface — not Linux
  [PASS] desktop notifications — available

smoke test: 3 passed, 0 failed, 2 skipped
For the dialog, I don't think it was open... but since the top bar was so big/small I didn't notice the add repo button there and tried pressing the "button" in the center (which seems like it's not clickable for some reason...) For the sizing... when I transferred the window to a non-wide, non-retina display, it sized itself properly and then I could move it between the wide and not wide display fine, but when going to the retina, it goes small, and back to the wide goes back to normal (after having it become normal on the non-wide, non-retina display....). It looks very nice, all in all, but I can't seem to find the diff everywhere... and there's no right click menu or anything... @rocketraman
When there's multiple worktrees, there's no diff or showing the state of staged/uncommitted etc... (worktrees are pretty common with ai agents working in parallel....).
r
@dave08 > For the dialog, I don't think it was open... but since the top bar was so big/small I didn't notice the add repo button there and tried pressing the "button" in the center (which seems like it's not clickable for some reason...) Oh good, so just to confirm Add Repo button is working? I will modify the blank slate button in the middle to also open up Add Repo. > It looks very nice, all in all, but I can't seem to find the diff everywhere... and there's no right click menu or anything... There is a "Diff" button in the Actions bar (the buttons in the repo details that say "Commit...", "Push", "Fetch", "Fast Forward", "Diff", "Log", "Snooze"). Diffs are also available where the staged, unstaged, and untracked files are shown in that same detail panel -- the diff button is at the right margin next to these headings. Likewise, if you have stashes, you can hover over it, and it will also show you a Diff option. And every branch (local and remote) also shows a Diff option when you hover over the name. > When there's multiple worktrees, there's no diff or showing the state of staged/uncommitted etc... (worktrees are pretty common with ai agents working in parallel....). Yeah, worktrees are a bit of a work in progress. The current workflow is: you click on "Add Repo" which will show up when you hover over the worktree shown in the detail panel. That adds the worktree as a separate repo (that inherits the parent repos tags and name prefix). Then within that repo you can do everything you can from the parent, diffs and so forth. When the worktree is deleted, the worktree repo in GitVantage goes with it. I think this design could use some improvements, and one good one would be a way to diff from the parent without the Add Repo step. Other suggestions welcome.
d
yeah the button on the topbar is working.
👍 1
When there's more than one workspace, the diff button is disabled...
r
Phew, because I was out of ideas on why it wasn't 🙂 Was gonna send you a debug build lol.
Workspace? Do you mean worktree?
Yep, reproduced. Diff not shown in the presence of work trees.
d
yeah worktree Also, I'd separate the action buttons that make actual changes and the ones that are just read-only, maybe visually or something... push has the same weight as log...
➕ 1
r
Good suggestion
d
I added the repo from the master worktree, and it showed me this in the repo list... with only commit/push/fetch/log buttons enabled on the side... I think one should be able to at least select the current worktree to be used for the actions on the side panel... or just an overview of all of them w/o any actions.
It already partially does that by saying that it's on master here and providing part of the actions for it... it just doesn't allow selecting the other worktrees, and just lists them further down in the side panel...
and disables the diff button for some reason even though the other buttons are active (for master?)
r
I'll improve worktrees. In the meantime, have you tried the "Add Repo" function for a worktree?
d
I did it for the master one, and that's what it gave... the other worktrees are less important and ephemeral (that's another reason why it would be better to manage them all under the master one -- ai tooling creates these worktrees on the fly and adding them explicitly is a big headache... and I don't even think that current IDEA and AS git tools do a great job at that either...)
That's where a ui tool like yours would shine if it would help with ai workflows...
Which is unfortunately where everything is headed nowadays...
r
You don't have to add them explicitly. You click "Add Repo" - not the blue button top right, but this one in the details pane when hovering over the worktree (yours will say Add Repo, mine says Goto Repo because I already added it):
d
There's only Copy branch for the main worktree... and the diff option is off for it, for the other worktrees there's Add repo... (continuing ai suggestion thought...) Especially comparing such worktrees and seeing if one is mergable/compatible with another etc...
Try selecting/adding the main worktree
r
Not sure what you mean. The parent repo is the one I added first into GitVantage. Then when worktrees are created (by claude or whatever) they should show up in the main repo in the worktree list. From there you should be able to "Add Repo" by hovering over the worktree, which brings the worktree into GitVantage as well, as a separate repo. There are links from there to navigate back to the parent, and the parent can navigate to its children. Like I said this design needs some iteration and I agree with your thoughts on making these easier to manage in general.
d
Do you see the diff enabled when you select the parent repo? I don't...
r
I've released v1.2.0, see release notes here: https://github.com/rocketraman/gitvantage/releases/tag/v1.2.0 -- among the other improvements @dave08 the scaling issues should hopefully be fixed due to upstream fixes in Nucleus, and worktree management should be much better.
d
That's much better for the scaling issues. I'm still looking at the new worktree management, it already seems better, and now I actually see the diffs on the main worktree, thanks!
👍 1