Skip to content

Commit 405e8eb

Browse files
author
Laurent Guitton
committed
chore: bump version to 2.21.0
1 parent 74c2073 commit 405e8eb

16 files changed

Lines changed: 46 additions & 37 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [2.21.0] - 2026-06-17
11+
1012
### Added
1113

1214
- **Monorepo Scope** — pick a single sub-workspace and scope the commit graph, commit search, and repo stats to its file tree. A scope picker in the repo sidebar lists auto-detected packages across six workspace formats (`pnpm-workspace.yaml`, `package.json` `workspaces` for npm/yarn, `Cargo.toml [workspace]`, `nx.json`, `turbo.json`, `go.work`) — all parsed natively in Rust with no new dependencies, base paths validated through `safe_repo_path()`, and a documented precedence (pnpm > Cargo > go.work > nx > turbo > npm/yarn) when manifests coexist; malformed manifests degrade to empty rather than erroring. The active scope is persisted per repo as an additive optional `scope` field in `.gitwand-workspace.json`, restored on open and validated against a new `path_exists` command (falls back to the whole repo with a one-time notice if the path was deleted). When a scope is active, `git_log` filters history to the sub-tree via a pathspec and the graph header shows the active-scope chip plus an "N commits hidden" badge — the hidden count is `unscopedTotal − scopedTotal` (both from a new lightweight `git_rev_count` command) so it stays stable across pagination; clicking either clears the scope. A "Custom folder…" entry in the picker scopes to any directory ad-hoc. Backed by a `useWorkspaceScope` composable, `backend.ts` wrappers for every new/changed command, dev-server routes for `dev:web` parity, `scope.*` i18n keys in all 5 locales, and real-temp-repo Rust tests (one per detection format + precedence) plus composable unit tests.
@@ -1053,6 +1055,7 @@ Design-system foundations — the app header and every overlay now ride on a sha
10531055
[2.11.0]: https://github.com/devlint/GitWand/compare/v2.10.0...v2.11.0
10541056
[2.10.0]: https://github.com/devlint/GitWand/compare/v2.9.0...v2.10.0
10551057
[2.9.0]: https://github.com/devlint/GitWand/compare/v2.8.2...v2.9.0
1058+
[2.21.0]: https://github.com/devlint/GitWand/compare/v2.20.1...v2.21.0
10561059
[2.20.1]: https://github.com/devlint/GitWand/compare/v2.20.0...v2.20.1
10571060
[2.8.2]: https://github.com/devlint/GitWand/compare/v2.8.0...v2.8.2
10581061
[2.8.0]: https://github.com/devlint/GitWand/compare/v2.7.0...v2.8.0

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<p align="center">
2222
<img alt="License" src="https://img.shields.io/badge/license-MIT-8B5CF6">
2323
<img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-100%25-3178C6">
24-
<img alt="Version" src="https://img.shields.io/badge/version-2.20.1-22c55e">
24+
<img alt="Version" src="https://img.shields.io/badge/version-2.21.0-22c55e">
2525
</p>
2626

2727
---

ROADMAP.md

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,6 @@
66

77
## What's Next
88

9-
### v2.21.0 — Monorepo Scope
10-
11-
_Inspired by GitSquid. Makes GitWand ergonomic on large monorepos (pnpm, Cargo, Nx…)._
12-
13-
- **Workspace scope picker**: select a sub-workspace — the graph, commit search, and stats all scope to its file tree
14-
- **Auto-detection**: reads `pnpm-workspace.yaml`, `Cargo.toml [workspace]`, `nx.json`, `turbo.json`, `go.work`
15-
- **Scope persisted per repo** in `.gitwand-workspace.json`
16-
- **Ad-hoc scope without config**: a "Custom folder…" entry in the picker opens the native folder picker → scope to any directory
17-
18-
**Follow-up (separate PR):** an in-app repo **folder-browser** panel (recursive working-tree tree) with a right-click **"Scope here"** — the gesture the roadmap originally envisioned. Deferred because the only existing tree (`FolderDiffTree`) is a *diff* tree (changed folders between two refs), the wrong substrate for general scoping, and is currently unmounted. Ad-hoc scoping already ships via the native picker above, so this is a UX nicety, not a capability gap.
19-
20-
---
21-
229
### v2.22.0 — Safety Bundle: pre-commit secrets scanner
2310

2411
_Inspired by GitSquid. A "safety" feature with zero network dependency — everything local._
@@ -77,6 +64,12 @@ _Inspired by t1gu1's feedback: "How can I code with AI in GitWand?" — GitWand
7764

7865
---
7966

67+
### Later (unscheduled)
68+
69+
- **In-app folder-browser + right-click "Scope here"** — follow-up to v2.21.0 Monorepo Scope: a recursive working-tree folder panel where right-clicking a folder scopes to it. Ad-hoc scoping already ships via the picker's "Custom folder…"; this in-tree gesture is deferred (the existing `FolderDiffTree` is a *diff* tree — the wrong substrate — and is unmounted).
70+
71+
---
72+
8073
## Vision
8174

8275
GitWand is a native Git client that **understands** code, resolves trivial conflicts on its own, and makes visible what the terminal hides.
@@ -108,6 +101,7 @@ Positioning: neither "yet another Git GUI" nor an IDE. A first-class Git navigat
108101
109102
| Version | Highlights |
110103
|---------|-----------|
104+
| **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 |
111105
| **v2.20.0** | Scratch worktree + extended Conflict Predictor — "Resolve in scratch worktree" from the merge preview opens a temporary isolated `gitwand-scratch-<timestamp>` worktree as a repo tab (resolve away from the active checkout, bring changes back in one click or discard, auto-cleanup, origin-anchored lifecycle); Conflict Predictor extended to rebase (per-commit replay against `onto`) and cherry-pick — side-effect-free `preview_rebase` / `preview_cherry_pick` Tauri commands, MCP `gitwand_preview_merge` `operation` param, new `gitwand preview` CLI command, operation selector + risk badge (low/medium/high) + hunk-by-hunk preview in the panel |
112106
| **v2.19.0** | GitHub OAuth & Azure DevOps + cross-fork PRs — "Sign in with GitHub" via OAuth device flow (tokens in the OS keychain, tokenless REST path, no `gh` CLI required), Azure DevOps as a first-class forge (`AzureProvider`, Entra ID device flow + auto token refresh, PR list/detail/diff/create/merge/checkout, comments, branch-policy CI checks, reviewer votes), cross-fork pull requests (target-repo selector defaulting to upstream, fork PRs surfaced in the list), and a backend performance pass (async Tauri commands, disk-persisted SWR PR cache, libgit2 `git_status` fast-path) |
113107
| **v2.18.0** | Inline CI Check Annotations — check-run annotations overlaid in the PR diff across the three forges (GitHub check-runs API, GitLab `artifacts:reports:codequality`, Bitbucket Reports API), gutter icons ❌/⚠/ℹ with hover tooltip, clickable "N annotations" badge in the CI tab, per-file ⚠ count in the diff sidebar, forge-agnostic `CIAnnotation` type + `ForgeProvider.getCheckAnnotations()`, lazy one-shot fetch per PR; Copilot CLI as a fourth AI provider (text-only sandbox) |

apps/desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitwand/desktop",
3-
"version": "2.20.1",
3+
"version": "2.21.0",
44
"private": true,
55
"description": "GitWand Desktop — lightweight Git client with smart conflict resolution (Tauri + Vue 3)",
66
"type": "module",

apps/desktop/src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gitwand-desktop"
3-
version = "2.20.1"
3+
version = "2.21.0"
44
description = "GitWand Desktop — standalone merge conflict resolution"
55
authors = ["Laurent Guitton <lb.guitton@gmail.com>"]
66
license = "MIT"

apps/desktop/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
33
"productName": "GitWand",
4-
"version": "2.20.1",
4+
"version": "2.21.0",
55
"identifier": "com.gitwand.desktop",
66
"build": {
77
"frontendDist": "../dist",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gitwand",
3-
"version": "2.20.1",
3+
"version": "2.21.0",
44
"private": true,
55
"description": "Git's magic wand — automatic conflict resolution and smart merge tools",
66
"author": "Laurent Guitton <lb.guitton@gmail.com>",

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitwand/cli",
3-
"version": "2.20.1",
3+
"version": "2.21.0",
44
"description": "GitWand CLI — resolve Git conflicts from your terminal or CI pipeline",
55
"type": "module",
66
"main": "dist/index.js",

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitwand/core",
3-
"version": "2.20.1",
3+
"version": "2.21.0",
44
"description": "GitWand core — automatic Git conflict resolution engine (powers @gitwand/cli, @gitwand/mcp, and the GitWand desktop app)",
55
"type": "module",
66
"main": "dist/index.js",

packages/mcp/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gitwand/mcp",
3-
"version": "2.20.1",
3+
"version": "2.21.0",
44
"mcpName": "io.github.devlint/gitwand",
55
"description": "GitWand MCP server — smart Git conflict resolution for AI agents (Claude, Cursor, Windsurf, Claude Code)",
66
"type": "module",

0 commit comments

Comments
 (0)