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
feat: hunk-level grouping, multi-backend AI, config, caching, help overlay
- Hunk-level semantic grouping: groups related hunks across files by intent,
a single file's hunks can appear in different groups
- Multi-backend AI: support Claude CLI and Copilot CLI (copilot --yolo)
with configurable preference and automatic fallback
- Config file: ~/.config/semantic-diff.json with JSONC comment support,
model selection, and cross-backend model mapping
- Grouping cache: .git/semantic-diff-cache.json keyed by diff hash for
instant startup when diff hasn't changed
- Group-aware diff filtering: sidebar file/group selection filters diff view
- Help overlay: press ? for keybinding reference
- Text wrapping: long diff lines flow with terminal width
- Improved key responsiveness: accept Repeat events on macOS
- Scroll-to-top on file select from sidebar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+60-8Lines changed: 60 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,16 +4,26 @@ A terminal diff viewer with AI-powered semantic grouping. Built with Rust and [r
4
4
5
5
Groups your git changes by *meaning* — not just by file path. Designed to run as a cmux split pane alongside Claude Code, giving real-time visibility into what's being changed and why.
-**Semantic grouping** — Claude CLI clusters changes into named groups (e.g. "Refactored auth logic", "Added test coverage")
13
+
-**Hunk-level semantic grouping** — AI clusters related hunks across files by intent (e.g. "Auth refactor", "Test coverage"), not just file-level grouping
14
+
-**Multi-backend AI** — Supports Claude CLI and GitHub Copilot CLI (`copilot --yolo`), with configurable preference and automatic fallback
15
+
-**Configurable** — `~/.config/semantic-diff.json` with JSONC comment support, model selection, and intelligent cross-backend model mapping
16
+
-**Grouping cache** — Cached in `.git/semantic-diff-cache.json` keyed by diff hash; instant reload when nothing changed
10
17
-**Syntax-highlighted diffs** — Powered by syntect with word-level inline highlighting
11
18
-**Collapse/expand** — Toggle files, hunks, and semantic groups
12
-
-**File tree sidebar** — Changed files organized by semantic group with stats
19
+
-**File tree sidebar** — Changed files organized by semantic group with per-hunk stats
20
+
-**Group-aware diff filtering** — Select a file or group in the sidebar to filter the diff view to only those changes
13
21
-**Hook-triggered refresh** — Auto-updates when Claude Code edits files (via SIGUSR1)
14
22
-**cmux integration** — Auto-opens in a right split pane
23
+
-**Help overlay** — Press `?` to see all keybindings
24
+
-**Text wrapping** — Long diff lines flow with the terminal width
15
25
-**Progressive enhancement** — Shows ungrouped diff immediately, regroups when AI responds
16
-
-**Graceful degradation** — Works without Claude CLI (falls back to ungrouped view)
26
+
-**Graceful degradation** — Works without any AI CLI (falls back to ungrouped view)
3. If semantic-diff is running: sends SIGUSR1 to refresh the diff
103
137
4. If not running: opens a cmux right-split pane and launches semantic-diff
104
-
5.Claude CLI groups the changed files by semantic meaning
138
+
5.AI groups the changed hunks by semantic meaning
105
139
6. You see real-time, grouped changes without leaving the terminal
106
140
141
+
## Changelog
142
+
143
+
### v0.2.0
144
+
145
+
-**Hunk-level semantic grouping** — Groups related hunks across files by intent, matching GitHub Copilot's content-level approach. A single file's hunks can appear in different groups.
146
+
-**Multi-backend AI support** — Added GitHub Copilot CLI (`copilot --yolo`) as a fallback when Claude CLI is not available.
147
+
-**Configuration file** — `~/.config/semantic-diff.json` with JSONC comment support. Configure preferred AI backend, model per backend, with intelligent cross-backend model mapping (e.g. `gemini-flash` → `haiku`).
148
+
-**Grouping cache** — Results cached in `.git/semantic-diff-cache.json` keyed by diff hash. Instant startup when diff hasn't changed.
149
+
-**Group-aware diff filtering** — Selecting a file in the sidebar filters the diff to its entire group. Selecting a group header toggles the filter.
150
+
-**Help overlay** — Press `?` to see all keybindings in a centered popup.
151
+
-**Text wrapping** — Long diff lines wrap with the terminal width instead of being truncated.
152
+
-**Improved key responsiveness** — Accept `Repeat` key events on macOS for smooth held-key navigation.
153
+
-**Scroll-to-top on file select** — File header pinned to top of viewport when selected from sidebar.
154
+
155
+
### v0.1.0
156
+
157
+
- Initial release with file-level semantic grouping, syntax highlighting, collapse/expand, file tree sidebar, and Claude Code hook integration.
158
+
107
159
## Requirements
108
160
109
161
- Rust 1.75+
110
162
- Git
111
-
-[Claude CLI](https://claude.ai/download) (optional, for semantic grouping)
163
+
-[Claude CLI](https://claude.ai/download)or [GitHub Copilot CLI](https://github.com/github/copilot-cli)(optional, for semantic grouping)
112
164
-[cmux](https://cmux.dev) (optional, for auto-split pane)
0 commit comments