You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
+
## [2.24.0] - 2026-06-19
11
+
12
+
### Added
13
+
14
+
-**Full-screen views + floating navigation dock** — the permanent left sidebar (3 tabs) and right Git Tree strip are gone. Navigation now lives in a floating bottom-center `AppDock` (Dashboard · Changes · PRs · Git Tree), so each view renders full-bleed. Dashboard, Changes (files │ diff │ collapsible commit rail), History (commit list │ diff) and PRs (list │ detail) compose their own panes; the Git Tree becomes a first-class full-screen `graph` view (selecting a commit drills into History). `RepoSidebar` gained a `pane` prop so a single component renders any one slice; the commit composer rail is collapsible and its state persisted. New `sidebar.toggleCommitPanel` i18n key in all 5 locales.
15
+
-**Launchpad — in-app issue review, action inbox & internal navigation** — issues now open in an in-app detail view (`IssueDetailView` + `useIssuePanel`) instead of bouncing to the browser. A new action inbox surfaces per-repo action cards (`useLaunchpadInbox` / `useRepoActionCards`), Launchpad scope selection is extracted into `useLaunchpadScope`, and internal navigation lets you move between Launchpad surfaces (and the branch selector) without leaving the app. New i18n keys in all 5 locales; composable unit tests added.
16
+
-**File-tree view for the history (commit) sidebar** — the list/tree toggle now also applies when browsing a previously committed (already pushed) commit: the commit's changed-files list can render as a nested, collapsible folder tree, with the status badge per file and click-to-scroll preserved. The layout choice is shared with the Changes view — switching to tree in one switches both — and folder collapse state is persisted per folder path. The pure tree-builder (`useFileTree`) was generalised over any `{ path: string }` entry so it serves both the working-tree `RepoFileEntry` list and the commit `GitDiff` list. The lone "H" header icon is indented to align with the chevron-prefixed change sections.
17
+
18
+
### Changed
19
+
20
+
-**Lazy-load `EditCommitOverlay` and `SplitCommitModal`** — both were always-mounted despite being gated by user actions; `v-if` guards plus `defineAsyncComponent` keep their chunks out of the main bundle until they're actually needed.
21
+
10
22
### Fixed
11
23
12
24
-**AppImage external links — silent no-open** — inside the released Linux AppImage, `AppRun` prepends `$APPDIR` entries to `PATH`, `XDG_DATA_DIRS` and `XDG_CONFIG_DIRS`, so a spawned `xdg-open` could resolve a bundled helper or miss the system browser/mime association and exit `0` without opening anything. URL openers now strip the `$APPDIR`-injected search-path entries before spawning (never emptying a variable), and capture each opener's stderr + exit code into the command log so a future silent failure stays diagnosable. Follow-up to the v2.22 AppImage link fix (GitHub issue #52).
@@ -15,10 +27,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
15
27
16
28
### Added
17
29
18
-
-**Full-screen views + floating navigation dock** — the permanent left sidebar (3 tabs) and right Git Tree strip are gone. Navigation now lives in a floating bottom-center `AppDock` (Dashboard · Changes · PRs · Git Tree), so each view renders full-bleed. Dashboard, Changes (files │ diff │ collapsible commit rail), History (commit list │ diff) and PRs (list │ detail) compose their own panes; the Git Tree becomes a first-class full-screen `graph` view (selecting a commit drills into History). `RepoSidebar` gained a `pane` prop so a single component renders any one slice; the commit composer rail is collapsible and its state persisted. New `sidebar.toggleCommitPanel` i18n key in all 5 locales.
19
30
-**File-tree view for the changes sidebar** — the Changes view gains a list/tree layout toggle (in the controls row, to the right of the monorepo scope picker; full-width with text labels when no scope picker is present). The tree layout nests each git section's files under their folders, with collapsible folders (per-section collapse state, persisted in `localStorage`); selecting a file auto-expands its ancestor folders. The chosen layout is persisted. Pure tree-building logic lives in a new `useFileTree` composable with unit tests; `viewLayout` / `viewAsList` / `viewAsTree` i18n keys added in all 5 locales.
20
31
-**Per-file and per-folder discard** — every file row now carries a discard button alongside stage/unstage, and tree folder rows carry folder-level stage/unstage + discard (operating on all files under the folder). Section-header, folder and file actions share a new segmented "action group" control (fused square buttons split by a hairline divider), and the stage/unstage/discard buttons are now always visible rather than hover-only.
21
-
-**File-tree view for the history (commit) sidebar** — the list/tree toggle now also applies when browsing a previously committed (already pushed) commit: the commit's changed-files list can render as a nested, collapsible folder tree, with the status badge per file and click-to-scroll preserved. The layout choice is shared with the Changes view — switching to tree in one switches both — and folder collapse state is persisted per folder path. The pure tree-builder (`useFileTree`) was generalised over any `{ path: string }` entry so it serves both the working-tree `RepoFileEntry` list and the commit `GitDiff` list. The lone "H" header icon is indented to align with the chevron-prefixed change sections.
_Inspired by GitSquid. A "safety" feature with zero network dependency — everything local._
12
12
@@ -18,7 +18,7 @@ _Inspired by GitSquid. A "safety" feature with zero network dependency — every
18
18
19
19
---
20
20
21
-
### v2.25.0 — Stacked Branches (native)
21
+
### v2.26.0 — Stacked Branches (native)
22
22
23
23
_A differentiating feature: stacked PRs workflow without an external CLI (Graphite, ghstack…)._
24
24
@@ -36,7 +36,7 @@ The paradigm: short stacked branches (`feat/step-1` → `feat/step-2` → `feat/
36
36
37
37
---
38
38
39
-
### v2.26.0 — Voice Input (experimental)
39
+
### v2.27.0 — Voice Input (experimental)
40
40
41
41
-**Local dictation**: microphone button in the commit panel — transcription via embedded Whisper (`whisper-rs` Rust) — zero cloud
42
42
-**Optional AI enrichment**: pass dictated text through `useAIProvider` for conventional commit formatting
@@ -46,7 +46,7 @@ The paradigm: short stacked branches (`feat/step-1` → `feat/step-2` → `feat/
46
46
47
47
---
48
48
49
-
### v2.27.0 — Terminal tabs & AI workspace
49
+
### v2.28.0 — Terminal tabs & AI workspace
50
50
51
51
_Inspired by t1gu1's feedback: "How can I code with AI in GitWand?" — GitWand as a native AI workspace._
52
52
@@ -60,7 +60,7 @@ _Inspired by t1gu1's feedback: "How can I code with AI in GitWand?" — GitWand
60
60
61
61
- "New AI task" button: opens a blank worktree + launches a Claude Code (or Codex CLI) session in a dedicated terminal tab — the worktree diff displays live in GitWand
62
62
- Vision: GitWand as the command center for coding with AI — see what the agent changes, stage what you want, commit — without leaving the app
63
-
- User feedback expected to shape v2.26+
63
+
- User feedback expected to shape v2.28+
64
64
65
65
---
66
66
@@ -101,6 +101,7 @@ Positioning: neither "yet another Git GUI" nor an IDE. A first-class Git navigat
101
101
102
102
| Version | Highlights |
103
103
|---------|-----------|
104
+
|**v2.24.0**| Full-screen views & in-app Launchpad — the permanent sidebar/Git-Tree strips give way to a floating bottom-center `AppDock`; Dashboard, Changes, History, PRs and a first-class full-screen Git Tree each render full-bleed (`RepoSidebar` gains a `pane` prop; collapsible, persisted commit composer rail). Launchpad gains in-app issue review (`IssueDetailView` + `useIssuePanel`), an action inbox (`useLaunchpadInbox` / `useRepoActionCards`), extracted scope (`useLaunchpadScope`) and internal navigation. The list/tree file-tree toggle extends to the history (commit) sidebar (`useFileTree` generalised over any `{ path }` entry). Plus a Linux AppImage follow-up: URL openers de-pollute `PATH`/`XDG_*` so a spawned `xdg-open` resolves the system browser instead of silently no-opening (#52), with opener stderr/exit captured. `EditCommitOverlay`/`SplitCommitModal` lazy-loaded. Full dev:web parity + 5-locale i18n |
104
105
|**v2.23.0**| Changes sidebar & rebase polish — list/tree layout toggle for the changes view (collapsible folders, persisted layout + per-section collapse state, auto-expand to the selected file) via a new `useFileTree` composable; per-file and per-folder stage/unstage/discard fused into an always-visible segmented "action group". Interactive rebase now works in the packaged desktop app (dedicated `git_interactive_rebase` Tauri command replacing a dev-only HTTP endpoint) and branch pickers list branches by most-recent commit (shared `branchSort`). Plus a Linux AppImage fix: external links/OAuth buttons route through a robust multi-opener chain. Full dev:web parity + 5-locale i18n |
105
106
|**v2.22.0**| Advanced conflict resolution — file-level bulk resolution ("Accept all: Current · Incoming · Both" in one click, persistent memorize-rule toast, one-click "Apply rule to N hunks"); tree-conflict resolution for markerless conflicts (modify/delete, both-deleted, add/delete) via `get_tree_conflicts`/`resolve_tree_conflict` with a dedicated editor panel + sidebar badge; markerless content-conflict reconstruction (`reconstruct_conflict` rebuilds the 3-way text from index stages when the working tree lost its `<<<<<<<` markers). Plus remote-state reliability fixes: false "Publish branch" on already-published branches (`remote_branch_exists`), false "offline" blocking push/pull (WKWebView spurious events → hysteresis + authoritative `confirmOnline` probe), and `git_remote_info` preferring `origin` (fixes the bogus "unpushed tags" modal). Full dev:web parity + 5-locale i18n |
106
107
|**v2.21.0**| Monorepo Scope — pick a sub-workspace and scope the commit graph, search & stats to its file tree. Auto-detects 6 workspace formats (pnpm, npm/yarn, Cargo `[workspace]`, `nx.json`, `turbo.json`, `go.work`), parsed natively in Rust with a documented precedence; scope persisted per repo (additive `scope` field in `.gitwand-workspace.json`, validated on load); `git_log` pathspec filtering + a new `git_rev_count` driving a stable "N commits hidden" badge; sidebar `ScopePicker` (auto-detected packages + "Custom folder…" ad-hoc), active-scope chip & badge in the graph header. Picker shows only on detected monorepos; full dev:web parity via a mock `detect-monorepo` route |
0 commit comments