Add juliaupgui: graphical interface for juliaup#1439
Add juliaupgui: graphical interface for juliaup#1439IanButterworth wants to merge 10 commits intomainfrom
Conversation
|
Would it make sense for the UI to present a multi-level view? Show the top level releases - 1.10, 1.11, nightly etc. And then click on that to get in to see all the different RCs, patch versions, etc. I think it would be valuable for the first screen to be newbie friendly that basically just installs/updates the latest stable version and maybe also offers the LTS version. You then click on something called "Channels" to go into all the other options. |
|
The JuliaUp version number next to the title (1.19.9) has the risk of being confused with the Julia version number. Perhaps you should only get it through an About section. |
|
Completely random and off-topic here - but it would be great to have the same UI manage packages and environments as well. So that you have one UI for installing and managing everything. Would it make sense for this to be a separate repo? |
|
This is very cool!!
Agreed! And apps. I generally think we should integrate apps more into the Juliaup story. I'm thinking of apps as something global per system installed, and I think centralizing those kind of things under Juliaup would make sense. Random other note: it would also be nice to have a UI like this in the VS Code extension. So maybe another idea would be to try to implement the UI in some kind of web framework, then expose it as a native client via tauri, and in the VS Code extension. Juliaup itself could just expose a JON-RCP interface that the UI code call into to do actual data operations. Main drawback of this though is that it is a heck of a lot more indirections and complicated... So I could also see an argument to just go with a simple version initially a la this PR, and then later make it more sophisticated... |
|
This looks great. Vibe coding is amazing... |
|
I think the first tab should default to a big friendly tile view, then this view be the "list" view alternative. That should work better for more basic usage. |
|
Added a more basic default tile view and nesting in the channel list. Updated the screenshots up top |
94541b4 to
f1e2ecc
Compare
New juliaupgui workspace crate (eframe/egui 0.29) providing a native GUI
for managing Julia installations, accessible via \`juliaup gui\`.
Installed tab:
- Tile and list views with launch, update, set-default, remove actions
- Whole-tile click to launch; hover highlights and pointer cursor
- Custom launch popup with project directory, extra args, and env vars
- Per-session persistence of project dir, args, and env vars
Available tab:
- Filterable channel list with install buttons and PR-number prompts
- Nested channel tree with expand/collapse; popular channels highlighted
- Link existing Julia binaries to custom channel names
Configuration tab:
- All juliaup settings: DB update interval, auto-install, manifest detect,
channel symlinks
- Directory overrides management (add/remove/prune non-existent)
- Terminal application preference with file browser (rfd)
- Self-update, refresh DB, and garbage collect actions
Platform integration:
- macOS: .app bundle in /Applications with generated .icns icon
- Linux: .desktop file and PNG icon in XDG directories
- Shortcuts created on install, refreshed on self-update, removed on uninstall
- Launch opens new terminal window (Terminal.app, iTerm2, or configured app)
Infrastructure: - Julia three-dot logo (SVG-accurate) as window icon and app icon
- Background worker thread for non-blocking operations
- Subprocess streaming with ANSI stripping for output-producing ops
- Activity log panel with collapsible history
Co-Authored-By: Claude <claude@anthropic.com>
|
Can I request a few people try this out here. If it's looking good I'll focus on code polish before asking for review. (Claude thinks its code is good at least, with only minor findings...). Note I updated the top post with a description of all the changes. |
Co-Authored-By: Claude <claude@anthropic.com>
Co-Authored-By: Claude <claude@anthropic.com>
- Append EXE_SUFFIX to juliaupgui binary name in juliaup.rs, juliainstaller.rs, and command_selfupdate.rs (Windows .exe fix) - Platform-specific shell quoting: POSIX single-quotes on Unix, double-quote escaping on Windows for cmd.exe - Escape paths with spaces in Linux .desktop Exec= field per Desktop Entry spec - Add #[cfg(test)] module with 21 unit tests covering clean_line, shell_quote, build_launch_cmd, julia_logo_icon, and JULIA_DOTS - Add test-juliaupgui CI job (ubuntu, macOS, Windows) to test.yml
|
I've addressed review findings from Claude Opus 4.6 and Codex 5.3. I'm planning to go ahead and merge this and put it out on releasepreview for people to try out. |
|
Ok, just took a very quick look at the code structure. Why are we introducing this whole |
|
This installs juliaupgui as an application on the system i.e. on macOS it creates an .app and installs it into /Applications so that the user can double-click on that to run it. I've thought less about how that works on linux/windows, but it should be done if claude is to be believed. |
|
Hm, so at least for Windows we definitely want to handle this differently. I'll take another look at MacOS. On Linux, I have no idea whether there is something like "shortcuts" for programs that show up in some launch menu? But for invocation from the command line, it seems it should be handled exactly like And then in general we'll need to change Github workflow that builds everything, I don't think it will be bundled at all otherwise. |
|
Can you try on darkmode. I'll fix light mode (I hadn't tested that) |
|
Also I'll make it default to list view when there are many channels installed. |
|
Might also make sense to add a config for that? Right now it picks up the Windows system setting, which seems the right thing as a default, but might be nice to have an override option. |
- Add dark/light/system theme with macOS dark mode detection - Persist installed view mode (tile/list) and theme preference - Add show-once list tip bubble anchored to view selector - Replace hardcoded dark-mode colors with theme-aware helpers - Remove favorites-first sorting from available tab - Add juliaupgui to workspace default-members - Add juliaupgui to release workflow, WiX MSI, and MSIX packaging - Fix light mode contrast: selection.stroke and active.fg_stroke adapt to theme - List view remove button now says 'Remove' instead of 'x' Co-authored-by: Claude <noreply@anthropic.com>
|
I added the DO NOT MERGE label, not because I don't like this PR, but because @IanButterworth and I discussed a sequencing for this PR that will have it wait a bit until we have the Windows Store submission working again. So this is just informational for everyone else to please not merge at this point :) |


Closes #54
Some discussion in JuliaLang/www.julialang.org#2430
Developed with Claude.
New juliaupgui workspace crate (eframe/egui 0.29) providing a native GUI
for managing Julia installations, accessible via `juliaup gui`.
Installed tab:
Available tab:
Configuration tab:
channel symlinks
Platform integration:
Infrastructure:
Fresh install