@@ -7,6 +7,124 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 0.2.0] - 2026-05-12
11+
12+ This release moves the ** Settings UI into its own OS window** , adds ** clone-from-URL**
13+ support with a folder picker, ships a new ** Cream & Blue** light theme, and delivers
14+ a wave of polish across the command palette, dialogs, and graph view. A new
15+ per-worktree refresh cache cuts background CPU during file-system churn.
16+
17+ ### Added
18+
19+ - ** Clone repositories from a URL.** The Repo Opener now has a ** Clone** button
20+ that opens a dedicated dialog with URL and Path fields. The dialog includes a
21+ ** Browse** button that opens an OS folder picker and auto-appends the repo
22+ name parsed from the URL (so picking ` ~/Github ` with
23+ ` https://github.com/user/repo.git ` fills ` ~/Github/repo ` ). Clone tries
24+ in-process ` git2 ` first and transparently falls back to system ` git ` with the
25+ configured HTTPS credentials. Resolves #32 .
26+ - ** Settings now opens in a dedicated OS window** (` Ctrl+, ` ), not an overlay.
27+ Window position and size are persisted across sessions, and the workspace and
28+ settings windows talk over a cross-window action channel so theme changes and
29+ settings updates apply live.
30+ - ** Cream & Blue light theme.** A warm near-paper light theme with cool-grey
31+ element layers and a Xero-style cyan-blue accent, intended as a more formal
32+ alternative to Catppuccin Latte.
33+ - ** Detail-panel view-mode toggle button.** A Folder/File icon in the detail
34+ panel toolbar toggles between Flat and Tree file views, alongside the
35+ existing ` v ` keyboard shortcut. The ` v ` shortcut is now documented in the
36+ Navigation section of the in-app shortcuts help.
37+ - ** Inline descriptions in the command palette.** Every command now shows a
38+ short description next to its label. Long descriptions truncate with an
39+ ellipsis and a hover tooltip shows the full text. The palette itself is
40+ wider (480 → 720 px) so descriptions fit on common displays.
41+ - ** Debian packaging.** The release pipeline now builds a ` .deb ` alongside the
42+ AppImage / tarball, with the necessary ` .desktop ` and AppStream metadata.
43+
44+ ### Changed
45+
46+ - ** Command palette redesign.** Widened to 720 px, the heavy focused-blue
47+ header underline replaced with a muted separator (the input renders its own
48+ focus outline), and the navigate / select / dismiss footer switched from a
49+ fixed 32 px row to padding-driven sizing so the labels aren't clipped at
50+ small font metrics. Inter-label gap and modal max-height tuned to match.
51+ - ** Settings secret fields commit on Enter, not on every keystroke.** The 10
52+ fields that round-trip through the OS keychain (GitHub token, AI API keys,
53+ Git provider tokens) no longer write to the keychain per character. Live UI
54+ still updates as you type; the actual save happens on submit.
55+ - ** Create-PR base branch defaults to the detected default branch.** Reads
56+ ` refs/remotes/origin/HEAD ` and falls back to ` main ` only when unavailable, so
57+ repositories whose default branch is ` master ` (or anything else) no longer
58+ get a stuck "main" placeholder.
59+ - ** Fuzzy file-search results are sorted by relevance.** The Ctrl+P-style fuzzy
60+ filter previously returned matches in repo order; it now ranks by fuzzy
61+ score, surfacing tighter character-position matches first in both flat and
62+ tree views.
63+ - ** CI is pinned to Rust 1.94.1** (matching ` rust-toolchain.toml ` ) so a stable
64+ bump no longer fails fmt checks on otherwise-green commits.
65+
66+ ### Fixed
67+
68+ - ** Diff preview now refreshes after stage / unstage / discard.** The diff
69+ viewer was holding the pre-action contents until you re-selected the file.
70+ It now subscribes to ` GitProjectEvent::StatusChanged ` and recomputes the
71+ diff for the currently displayed file when its status changes. Fixes #31 .
72+ - ** Theme editor / clone / stash-branch dialogs render with a repo open.**
73+ These three dialogs were only attached to the no-tabs welcome layout, so
74+ clicking "Edit Theme" or "Clone" while a repo was open flipped their
75+ internal ` visible ` flag but rendered nothing. They are now in the tab-open
76+ render tree too.
77+ - ** Clone dialog is no longer hidden behind the Repo Opener.** Welcome-screen
78+ z-order was inverted so the clone dialog sits above the opener it was
79+ launched from.
80+ - ** Settings window closes when "Edit Theme" is clicked.** The theme editor
81+ lives in the workspace window; previously the settings window stayed on
82+ top, hiding the editor. Settings now closes when the editor is requested.
83+ - ** Graph column headers align with their data rows.** The right-side header
84+ hosts both the "my-commits" filter and the display-settings gear (52 px
85+ total), but the trailing row spacer was still sized for a single button,
86+ so Author / Date were pushed left of their columns. Hash / Message also
87+ ignored the per-row 16 px drag-to-rebase grip. Both spacers are now in the
88+ header, and the Author / Date drag-resize math is updated accordingly.
89+ - ** Graph display-settings popover no longer leaks hover** into the commit
90+ rows behind it. The popover only stopped left-click propagation, so
91+ mouse-move still reached the underlying rows.
92+ - ** Dialog buttons no longer overflow on narrow modals.** Branch / Confirm /
93+ Create-PR / Stash-Branch / Tag dialogs lay their button row out below the
94+ keybinding hint instead of squeezing it onto a single horizontal strip.
95+ Branch dialog gains ` flex_nowrap ` to prevent button truncation. Fixes #30 .
96+ - ** GitHub 403 errors are now actionable.** OAuth-App access restrictions and
97+ SAML SSO enforcement messages are rewritten into a single readable
98+ sentence, and long error text wraps inside a 480 px container instead of
99+ pushing the layout horizontally in the Issues / Pull Requests panels.
100+ - ** GitHub OAuth device-flow polling cancels with the window.** Previously the
101+ polling future was detached and could run for ~ 15 minutes after the
102+ settings UI was dismissed; it is now bound to the settings entity.
103+ - ** Settings window bounds save only on close** , not on every render frame
104+ during a drag.
105+ - ** Splash screen top corners squared** so they align with the title bar.
106+
107+ ### Performance
108+
109+ - ** Per-worktree diff-stat cache.** ` GitProject::refresh() ` and the watcher
110+ loop now share a ` WorktreeStatusCache ` keyed on path + status flags +
111+ staged blob OIDs + workdir mtime/size for modified files. Watcher-triggered
112+ refreshes skip the expensive ` batch_diff_stats() ` scan when the fingerprint
113+ is unchanged, cutting CPU during background file-system churn while typing
114+ in another editor.
115+
116+ ### Internal
117+
118+ - ** Test coverage push.** Workspace event enums and dialog logic gained unit
119+ tests across the board: ` BranchDialog ` , ` ReflogView ` , ` SubmoduleView ` ,
120+ ` BisectView ` , ` Toolbar ` , ` ShortcutsHelp ` , ` SettingsView ` , ` RepoOpener ` ,
121+ ` Workspace ` , ` StashBranchDialog ` , ` CreatePrDialog ` (including PR JSON
122+ request/response parsing), ` ConfirmDialog ` , ` BlameView ` , ` CommandPalette `
123+ (` CommandContext ` / ` PaletteCommand ` ), ` CommitPanel ` co-author trailer
124+ formatting, and fuzzy file-search ordering. Integration tests gained a
125+ merge-commit graph test and an ignored headless GPU smoke test, and were
126+ made robust to CI environments that lack a configured ` init.defaultBranch ` .
127+
10128## [ 0.1.8] - 2026-04-28
11129
12130### Added
@@ -248,7 +366,8 @@ establishes a feature-complete baseline for day-to-day use.
248366- Only x86_64 Windows and Linux, and x86_64/aarch64 macOS are built by CI.
249367 Other architectures can be compiled locally with ` cargo build --release ` .
250368
251- [ Unreleased ] : https://github.com/noahbclarkson/rgitui/compare/v0.1.8...HEAD
369+ [ Unreleased ] : https://github.com/noahbclarkson/rgitui/compare/v0.2.0...HEAD
370+ [ 0.2.0 ] : https://github.com/noahbclarkson/rgitui/compare/v0.1.8...v0.2.0
252371[ 0.1.8 ] : https://github.com/noahbclarkson/rgitui/compare/v0.1.7...v0.1.8
253372[ 0.1.7 ] : https://github.com/noahbclarkson/rgitui/compare/v0.1.6...v0.1.7
254373[ 0.1.2 ] : https://github.com/noahbclarkson/rgitui/compare/v0.1.0...v0.1.2
0 commit comments