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
+23-2Lines changed: 23 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,31 @@ All notable changes to GitWand will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
-
## [Unreleased]
8
+
## [2.18.0] - 2026-06-12
9
+
10
+
v2.18 brings the CI back to the code: check-run annotations now overlay the PR diff — the exact line that failed the linter or typecheck, right where you review — across all three forges. GitHub Copilot CLI also joins the AI-provider lineup.
9
11
10
12
### Added
11
13
14
+
-**Inline CI check annotations** — check-run annotations are fetched per PR and anchored to the diff:
15
+
-**Gutter icons** (❌ failure, ⚠ warning, ℹ notice) on affected lines in the PR inline diff, with a subtle colored edge on annotated rows. Hovering shows a tooltip with the annotation title, message, and the check that produced it. Multi-line annotations flag their whole range (capped at 20 lines); when several annotations hit the same line, the worst level wins the icon.
16
+
-**"N annotations" badge in the CI tab** — check-runs that produced annotations show a clickable badge that jumps straight to the diff.
17
+
-**Per-file ⚠ count in the diff file sidebar** — spot which files the CI flagged before opening them.
18
+
-**All three forges**: GitHub (check-runs annotations API), GitLab (`artifacts:reports:codequality` — Code Climate severities mapped to failure/warning/notice), Bitbucket (Reports API annotations). Everything is non-fatal: a repo with no checks, an expired report, or a forge with nothing to offer simply shows no annotations.
19
+
-**Lazy by design** — annotations are fetched once per PR, the first time the Diff or CI tab is opened; never during PR-list browsing.
12
20
-**GitHub Copilot CLI as an AI provider** — `copilot-cli` joins `claude-code-cli`, `codex-cli`, and `opencode-cli` in the `AIProvider` union. It piggybacks on the user's locally-installed `copilot` binary and their GitHub Copilot subscription — no API key required. Detection mirrors the existing CLI providers (binary discovery across PATH + common install locations) and it appears in Settings → AI with the same status/re-detect pattern. Prompts run one-shot via `copilot -p` (model selectable via the per-provider model picker, free-text since Copilot has no enumeration command). Tool permissions are deliberately restricted (`--deny-tool=shell`, `--deny-tool=write`, `--no-ask-user`, and `COPILOT_ALLOW_ALL` stripped from the child env) so Copilot only produces text and cannot edit files, run shell commands, or block on interactive prompts.
13
21
22
+
### Changed
23
+
24
+
-**Sidebar quick actions trimmed** — the Changes and History quick actions were removed from the repo sidebar (#39); both remain reachable from their primary surfaces (commit area, Git Tree).
25
+
14
26
### Technical
15
27
28
+
- New forge-agnostic type `CIAnnotation { check_name, path, start_line, end_line, level, title, message }` (`types.rs`, mirrored as camelCase in `backend-pr.ts` with a shared `mapAnnotation` normalizer — unknown levels degrade to `notice`).
29
+
- Three new Rust commands following the per-forge pattern: `gh_check_annotations` (head SHA → `commits/{sha}/check-runs` → `check-runs/{id}/annotations`, capped at 20 annotated runs), `gl_mr_annotations` (MR pipelines → jobs with a `codequality` artifact → `gl-code-quality-report.json`), `bb_pr_annotations` (commit Reports → per-report annotations). Registered in `lib.rs`; GitHub path mirrored in `dev-server.mjs` (`/api/gh-check-annotations`); TS wrappers in `backend-pr.ts` / `backend-gitlab.ts` / `backend-bitbucket.ts`.
30
+
-`ForgeProvider.getCheckAnnotations()` added to the forge contract and implemented by the three providers. `usePrPanel` gains `prAnnotations` (lazy, one flight per PR), `annotationCountByCheck`, and `annotationsByFile`.
31
+
- Gutter rendering in `PrInlineDiff` is anchored on `newLineNo` (annotations target the head commit); CSS-only hover tooltip, no new dependency.
32
+
- i18n: `pr.annotations.{badge,badgeTooltip}` across all five locales; unit tests in `v2.18-ci-annotations.test.ts`.
16
33
- New Rust commands `detect_copilot_cli` and `copilot_cli_prompt` (`copilot --no-color --deny-tool=shell --deny-tool=write --no-ask-user [--model …] -p <prompt>`), plus a `CopilotCliInfo` type; registered in `lib.rs`. Mirrored across all three layers: `commands/ai.rs`, `dev-server.mjs`, and the `backend-ai.ts` wrapper.
17
34
-`useAIProvider` adds `copilot-cli` to `CLI_AGENT_PROVIDERS`, dispatches it in `suggest()` / `rawPrompt()`, and forwards the per-provider model. `SettingsPanel` gains the provider option, detection state, and status block.
18
35
- i18n: `aiProviderCopilotCli`, `aiProviderCopilotCliNotFound`, `aiCopilotCliDetectedHint`, `aiCopilotCliInfoBox` across all five locales (en, fr, es, pt-BR, zh-CN).
@@ -984,7 +1001,11 @@ Design-system foundations — the app header and every overlay now ride on a sha
984
1001
- CI pipeline via GitHub Actions (Node 18, 20, 22)
_Inspired by GitSquid. A natural extension of the GitWand engine and Worktree first-class (v2.7)._
@@ -153,6 +134,7 @@ Positioning: neither "yet another Git GUI" nor an IDE. A first-class Git navigat
153
134
154
135
| Version | Highlights |
155
136
|---------|-----------|
137
+
|**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) |
156
138
|**v2.17.0**| opencode provider + per-CLI model picker — `opencode-cli` as a first-class AI provider (`opencode run`, binary discovery, Settings status), second model select under the provider picker for the three CLI agents (opencode enumerates via `opencode models`, Claude Code aliases, Codex free-text), `aiModelByProvider` persisted per provider, `--model` threaded through all three CLIs |
157
139
|**v2.16.0**| PR Activity Notifications — background Launchpad poller, zero-network snapshot diff (`useLaunchpadNotifications`) for CI flips / review requests / new comments / merge-close, native OS notifications via `tauri-plugin-notification` (background-only), Settings granularity (All · Reviews & comments · CI failures only · None) + "by people" bot filter, enriched `workspace_prs_all` (CI/review/comment fields) |
158
140
|**v2.15.1**| Git Tree polish & quick actions — Force push (branch context menu + protected-trunk/diverged-remote guard), Quick Stash `⌘⇧,` (instant, AI label) + pending badge in the commit area, Submodules in the Git Tree (branch-picker section, per-commit pointed-SHA badge, click-to-navigate) |
0 commit comments