Status: complete — UI-PLAN Phases 1–10 implemented; manual screenshot QA remains optional follow-up.
Companion docs: UI-PLAN.md, README.md
GitRonimo’s UI should look professional and use a familiar Git-client information architecture, with original branding and copy.
Current window layout: toolbar (top), sidebar + content + optional inspector (middle), activity bar (bottom).
┌──────────────────────────────────────────────┐
│ Toolbar │
├──────┬───────────────────────────┬───────────┤
│ Side │ Content │ Inspector │
│ bar │ │ │
├──────┴───────────────────────────┴───────────┤
│ Activity bar │
└──────────────────────────────────────────────┘
No Services tab. GitHub personal-access-token connect/sign-out lives in Settings. Pull Requests remain a palette destination. Hosted-repo browse/clone from a Services pane is out of product.
- recents and saved repositories with last-opened time and current branch;
- folder grouping (and a grouping toggle);
- Add existing…, Create new…, and Clone… in one place;
- a badge/line showing each repo’s open state or upstream.
Single window per repository. Sidebar destinations: Working Copy, History, Stashes, Settings. Pull Requests, Branches Review, and Reflog remain reachable from the command palette.
NavigateBack / NavigateForward are toolbar chevrons only — disabled when the stack is empty. The content area must not add its own Back/Forward row.
- left-click a local/remote branch or tag opens History scoped to that ref;
- double-click a local or remote branch checks it out (
git switch/git switch --track); - right-click opens the branch context menu, not an inline panel in Working Copy;
- remote-activity footer (or activity bar) shows in-flight fetch/pull/push progress and last result.
- commit composer sits above the file list (subject first; description / Amend / Sign-off ease in on focus);
- Modified only / All files list-mode toggle;
- per-file stage checkbox;
- multi-select with Command-A, Shift-click, and Command-click; checkbox on a multi-selected row stages/unstages all selected files (see
keyboard-shortcuts.md).
- left: list of open PRs (title, number, author, updated);
- right: detail with description, changed files, comments;
- actions: comment, merge with explicit method, create PR, checkout branch.
- Changeset / Tree mode toggle on the detail pane;
- full-width flat commit rows, multi-lane graph, two-line layout (author + filled ref pills, then hash + subject). HEAD/local branches use accent pills; tags use warning pills; remotes are muted;
- double-click → Commit Detail.
File list (with per-file add/del counts) on the left, full diff on the right. First-class destination from History.
- Welcome offers open, add, create (
git init), and clone. - File editing happens in an external editor; the watcher refreshes status.
- File list + diff; per-file checkbox; left = staged / right = unstaged affordance; hunk and line staging in the diff viewer.
- Composer: subject first; description / Amend / Sign-off ease open on subject focus. Optional Suggest (Settings AI commit messages) fills those fields from the staged diff and does not commit. Stay on Working Copy after commit; remember the new OID for History reveal.
- History graph + detail confirms the new commit.
Done (functional):
- Working Copy composer above file list, Modified/All Files toggle, per-file stage checkbox, staged/unstaged badges. Suggest appears on the composer when Settings AI commit messages is on. File list is full width; the diff pane appears after a file is selected.
- Working Copy multi-select: Command-A select all visible files; toggle deselect/reselect on row click when all selected; batch stage/unstage via checkbox on multi-selection
- Visible Back/Forward (Prev/Next) toolbar navigation with disabled state
- Remember new commit OID for History reveal; stay on Working Copy after commit (no auto-redirect)
- Commit Detail view with Changeset/Tree modes (double-click from History)
- Stashes, Remotes, and Git LFS sidebar destinations
- Repositories welcome view: grouped/flat recents, detail panel, Add/Create/Clone actions
- Pull Requests list/detail workflow (Phase 9 baseline)
- Welcome toolbar Bookmarks / Workflow tabs (templates, Start / Finish / Sync)
- Services tab and view removed; GitHub connect lives in Settings. Settings also has Git engine (gix / System Git), auto-stash, and AI commit messages (extra toggles default off). In-app updates live in GitRonimo → Settings… and default on.
- Always-visible inline toolbar/sidebar search filtering repos and files
- Sidebar remote-activity progress bar during fetch/pull/push + last-result footer when idle
- Visual polish pass: welcome detail headers, commit focus border, diff tabs/hunk headers, HEAD badge, activity bar
Done (shell chrome):
- Message history popup on the activity bar
- Branch delete Cancel/Delete + unmerged Could Not Delete Branch force confirm
- Pinned branches persist across relaunch; flat at top of BRANCHES
- Command palette expanded and scrollable
- Network progress strip in the bottom activity bar during fetch/pull/push/sync
- Modal overlays fade in and out (~150ms); context menus stay instant
- Commit composer height+fade expand/collapse when the subject is focused
Done (stashes core):
- Save stash dialog (message + include untracked); path-limited stash from WC
- Apply stash dialog (delete after = pop; restore staging area =
--index) - Stashes list shows date; selection loads paths + diff; Branch… from stash
- Mutations refresh Working Copy and stash list; stash files can be applied without dropping (drag onto Working Copy). Auto-stash is a Settings opt-in. Named snapshots keep the working copy.
- Sidebar HEAD pill includes
↑N/↓N
Done (interior):
- In-repo sidebar trimmed to Working Copy / History / Stashes / Settings
- Branch/ref: left-click scoped History; double-click checkout; right-click context menu; selection ribbon vs muted HEAD badge
- Pull / Push HEAD dialogs with options
- History: full-width flat rows, multi-lane graph, two-line layout, filled ref pills (accent branches, warning tags), scope header + month groups
- Shared layout constants and helpers in
components.rs
| Gap | Notes |
|---|---|
| OAuth / enterprise GitHub | Deferred per PLAN.md |
| Deterministic remote progress | Strip + Cancel exist; finer Git stderr parsing still partial |
| History ref label density | Long ref names still truncate on narrow panes |
See keyboard-shortcuts.md and desktop-shell.md.
- GitHub Cloud uses a personal access token entered through an obscured macOS dialog and stored only in Keychain (Settings, service
com.gitronimo.github). - Optional AI commit API keys use a separate Keychain item (
com.gitronimo.ai-commit). Suggest never auto-commits. - Enterprise/self-hosted GitHub and OAuth device flow remain separate hardening work in
PLAN.md. - Pull Request mutations require the selected hosted repository and use explicit merge-method confirmation.
- Density: compact rows; file lists show status badge + path + inline line-change counts.
- Color: status signals via semantic tokens; do not overload with color.
- Diff: hunk highlighting, subtle added/removed backgrounds, visible current-line indicator.
- Commit: subject vs body, staged file count, and Commit affordance must be unambiguous.
- Empty states: every view needs a meaningful empty state.
- Button hierarchy: confirming actions use
primary_action_button; Cancel stays onraised_background. - Surfaces: panels are flat and separated by borders. The commit composer shares the pane background; details ease in height and opacity on subject focus.
- Overlays: modal popups fade (~150ms) via
overlay_anim.rs; sidebar context menus stay instant. - Branch context menu: cursor-anchored (
ref_context_menu.rs); items quote the branch name; Pin/Archive persist; unmerged delete offers force confirm. - History commit context menu: grouped menu with quoted short OIDs (
commit_context_menu.rs). - Element ids: button helpers namespace GPUI ids so two controls never share hover/click state.