From f6453c392e1b1b8f6bfa9422ddda5765c56315cc Mon Sep 17 00:00:00 2001 From: oskarnrk Date: Fri, 23 Oct 2026 13:48:18 +0200 Subject: [PATCH 1/4] feat: add /diffsplit pane Add a /diffsplit command that opens a "Split Diff" pane with the uncommitted changes against HEAD, untracked files included: - a list of the changed files first, with +n -n at the end of each row; a click jumps to the file - every file open under its name, between two lines, with its diff in two columns; a click on the name folds or unfolds it - the pane reloads by itself: right after a tool that can write files (Edit, Write, NotebookEdit, Bash) and every 3 seconds while it is open, only when the working tree changed - limits on rows and on text, so the tree stays under what the engine draws The drawing of a diff is now one function (drawDiff in hooks/draw.ts) used by the Edit and Write results and by the pane. The text budget applies to both. Add the state contract in types/, tests for the git parser and the pane, and a README section for the command. Co-Authored-By: Claude Sonnet 5.5 --- .claude-plugin/plugin.json | 1 + README.md | 22 ++- hooks/diff-command.ts | 319 +++++++++++++++++++++++++++++++++++ hooks/draw.ts | 247 +++++++++++++++++++++++++++ hooks/git-diff.ts | 60 +++++++ hooks/register.ts | 163 +----------------- tests/diffsplit-pane.test.ts | 233 +++++++++++++++++++++++++ tests/git-diff.test.ts | 66 ++++++++ types/index.d.ts | 42 +++++ 9 files changed, 997 insertions(+), 156 deletions(-) create mode 100644 hooks/diff-command.ts create mode 100644 hooks/draw.ts create mode 100644 hooks/git-diff.ts create mode 100644 tests/diffsplit-pane.test.ts create mode 100644 tests/git-diff.test.ts create mode 100644 types/index.d.ts diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 67aa5b9..c5b7a78 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -2,6 +2,7 @@ "name": "cc-split-diff-view", "version": "1.0.0", "description": "Draws Edit and Write diffs in two side-by-side columns: removed lines on the left, added lines on the right, in Claude Code's own diff colors", + "types": "./types/index.d.ts", "author": { "name": "oskarnrk", "url": "https://github.com/oskarnrk" }, "repository": "https://github.com/neteye-platform/cc-split-diff-view" } diff --git a/README.md b/README.md index 6de5fdb..cf1d39a 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,30 @@ instead of one stacked `-`/`+` list: - colors are Claude Code's own diff colors (`diffRemoved` / `diffAdded` theme keys), so they follow your `/theme` - syntax highlighting comes from Claude Code's own highlighter (the `Code` - element, the one the built-in `/diff` pane uses), with the language taken - from the file's extension + element), with the language taken from the file's extension Errors, edits held for review, brand-new files and anything without a diff keep Claude Code's normal drawing. +## `/diffsplit` + +Reviews all the uncommitted changes in one pane, with every diff in two +columns. It opens a pane titled **Split Diff** with the changes of the working +directory against `HEAD`, untracked files included: + +- a list of the changed files comes first, each row ending with its `+n -n` + counts; click a file, or press `Enter` on it, to jump to its diff +- under the list, every file is open: its name sits between two lines, with + the counts at the end of the row, and its diff follows in two columns +- click a file's name, or press `Enter` on it, to fold or unfold that file +- `r` reloads the changes +- `Esc` closes the pane + +Binary files are listed with `binary` and no diff. The pane reads the diff of +the first 100 files and draws a limited number of rows (at most 500 per file +and about 1200 in all); when a diff is cut it says `… N more rows`, and +folding other files makes room for it. + ## Requirements - Claude Code **v2.1.287 or later** (the version that introduced mods; diff --git a/hooks/diff-command.ts b/hooks/diff-command.ts new file mode 100644 index 0000000..a61fdef --- /dev/null +++ b/hooks/diff-command.ts @@ -0,0 +1,319 @@ +import { atom, read, update } from 'claude-code' +import type { ElementTable, Hook, On } from 'claude-code' + +import { TEXT_BUDGET, drawDiff, drawUnifiedHunks, rowsWithin } from './draw.js' +import type { Kit as DrawKit } from './draw.js' +import { parseChanges, parseHunks, parseUntracked } from './git-diff.js' +import { splitRows } from './split-rows.js' +import type { SplitDiff } from './split-rows.js' +import type { Change, FileDiff, Snapshot } from '../types' + +const COMMAND = 'diffsplit' +const PANE = 'diffsplit' + +/** Rows drawn for one file before "… N more rows"; the pane scrolls. */ +const MAX_ROWS = 500 + +/** + * Rows drawn in all the files together. A row is about ten nodes of the tree + * and the engine refuses a tree of more than 20000, which leaves the pane blank. + */ +const MAX_TOTAL_ROWS = 1200 + +/** Characters a file's row takes besides its path: the folding mark, the counts and the label. */ +const FILE_ROW_CHARS = 30 + +/** Files whose diff is read, all at once on load; the rest are counted, not shown. */ +const MAX_FILES = 100 + +/** How often the open pane looks for changes made outside the tools Claude runs. */ +const POLL_MS = 3000 + +/** Tools that can change the working tree: the open pane reloads when one ends. */ +const WRITING_TOOLS = ['Edit', 'Write', 'NotebookEdit', 'Bash'] as const + +/** Git's name for an empty tree, the base of a repository with no commit yet. */ +const EMPTY_TREE = '4b825dc642cb6eb9a060e54bf8d69288fbee4904' + +const GIT = ['git', '--no-pager', '-c', 'core.quotepath=off'] +const DIFF = ['diff', '--no-color', '--no-ext-diff', '--no-renames'] + +// Change the tag when the fields of a value change: it declines what an +// earlier version stored, which outlives a reload. +const snapshot = atom({ plugin: 'cc-split-diff-view', key: 'snapshot' } as const, null, { shape: 'snapshot-2' }) +const folded = atom({ plugin: 'cc-split-diff-view', key: 'folded' } as const, [], { shape: 'folded-1' }) + +/** The engine interface a hook receives as `$`. */ +type Engine = Parameters>[0] + +type Kit = DrawKit & Pick, 'Button'> + +// The module's own, so a reload of the code starts them over: what the pane +// drew last (see `fingerprint`), the timer that watches the tree, and whether +// a refresh is under way. +let seen = '' +let timer: { cancel: () => void } | undefined +let isRefreshing = false + +/** + * Registers `/diffsplit`: a pane that lists the uncommitted changes of the + * working directory, each file open under its name as a split diff. + * + * @param on the engine's registrar + */ +export function registerDiffSplit(on: On) { + on('session.start', async ($, e, next) => { + await $.command.register({ + name: COMMAND, + description: 'Show the uncommitted changes in a split diff pane', + }) + return next(e) + }) + + on('command.run', { command: COMMAND }, async $ => { + const loaded = await load($, { isReload: false }) + seen = await fingerprint($).catch(() => '') + await $.ui.open({ id: PANE, title: 'Split Diff', focus: true, closeOnEscape: true, rows: 30, columns: 120 }) + + // While the pane is open, look at the tree now and then: it ends itself when the pane closes. + timer?.cancel() + timer = $.clock.every(POLL_MS, () => void refresh($)) + if (loaded.kind === 'error') return { text: loaded.message } + const n = loaded.files.length + loaded.hiddenFiles + return { text: n === 0 ? 'No uncommitted changes.' : `Split diff opened: ${n} changed ${n === 1 ? 'file' : 'files'}.` } + }) + + on('ui.render', { component: 'Pane', requestId: PANE }, async ($, e) => { + const kit: Kit = $.ui.resolve(e) + const current = await read($, snapshot) + const closed = await read($, folded) + + if (current === null) return kit.Text({ dimColor: true, children: ['Run /diffsplit to load the changes.'] }) + if (current.kind === 'error') return kit.Text({ color: 'error', children: [current.message] }) + + return drawFiles($, kit, current.files, current.hiddenFiles, closed, e.props.bodyColumns) + }) + + // A tool that may have written files: the open pane shows it at once. + on('tool.call', { tool: WRITING_TOOLS }, async ($, e, next) => { + const ran = await next(e) + void refresh($) + return ran + }) +} + +/** + * Asks git for the changes against HEAD, plus the untracked files, and keeps + * them. A reload from the pane itself keeps the files the person folded. + */ +async function load($: Engine, { isReload }: { isReload: boolean }): Promise { + const result = await ask($) + await update($, snapshot, () => result) + if (!isReload) await update($, folded, () => []) + return result +} + +/** Git's base for the diff: HEAD, or the empty tree in a repository with no commit yet. */ +async function baseOf($: Engine) { + const head = await $.process.run([...GIT, 'rev-parse', '--verify', '--quiet', 'HEAD']) + return head.exitCode === 0 ? 'HEAD' : EMPTY_TREE +} + +/** + * A stand-in for the state of the working tree: the diff of the tracked files, + * and the names and content hashes of the untracked ones. Two equal strings + * mean nothing changed, and the pane is not drawn again. + */ +async function fingerprint($: Engine): Promise { + const git = (args: string[], stdin?: string) => $.process.run([...GIT, ...args], stdin === undefined ? undefined : { stdin }) + const [diff, others] = await Promise.all([git([...DIFF, await baseOf($)]), git(['ls-files', '--others', '--exclude-standard', '-z'])]) + const paths = others.stdout.split('\0').filter(path => path !== '') + const hashes = paths.length === 0 ? '' : (await git(['hash-object', '--stdin-paths'], paths.join('\n'))).stdout + return [diff.stdout, others.stdout, hashes].join('\u0001') +} + +/** Reloads the pane whether or not the tree changed: the person asked. */ +async function reloadNow($: Engine) { + await load($, { isReload: true }) + seen = await fingerprint($).catch(() => seen) +} + +/** + * Reloads the pane if it is open and the working tree is not what it drew. + * Never throws and never runs twice at once; a failure is tried again on the + * next tick. + */ +async function refresh($: Engine) { + if (isRefreshing) return + isRefreshing = true + try { + if (!(await $.ui.panes()).some(pane => pane.id === PANE)) { + timer?.cancel() + timer = undefined + return + } + const now = await fingerprint($) + if (now === seen) return + await load($, { isReload: true }) + seen = now + } catch { + // The next tick tries again. + } finally { + isRefreshing = false + } +} + +async function ask($: Engine): Promise { + const git = (args: string[]) => $.process.run([...GIT, ...args]) + + const inside = await git(['rev-parse', '--is-inside-work-tree']).catch(() => null) + if (inside === null || inside.exitCode !== 0) return { kind: 'error', message: 'Not inside a git repository.' } + + const base = await baseOf($) + const [nameStatus, numstat, others] = await Promise.all([ + git([...DIFF, '--name-status', '-z', base]), + git([...DIFF, '--numstat', '-z', base]), + git(['ls-files', '--others', '--exclude-standard', '-z']), + ]) + if (nameStatus.exitCode !== 0) return { kind: 'error', message: nameStatus.stderr.trim() || 'git diff failed.' } + + const all = [...parseChanges(nameStatus.stdout, numstat.stdout), ...parseUntracked(others.stdout)] + const files = await Promise.all(all.slice(0, MAX_FILES).map(change => diffOf($, change, base))) + return { kind: 'changes', files, hiddenFiles: Math.max(0, all.length - MAX_FILES) } +} + +/** One file with its hunks. An untracked file gets its counts from them. */ +async function diffOf($: Engine, change: Change, base: string): Promise { + if (change.isBinary) return { ...change, hunks: [] } + + const git = (args: string[]) => $.process.run([...GIT, ...args]) + // `--no-index` exits 1 when the files differ, which an untracked file always does. + const shown = + change.status === 'untracked' + ? await git([...DIFF, '--no-index', '--', '/dev/null', change.path]) + : await git([...DIFF, base, '--', change.path]) + const hunks = parseHunks(shown.stdout) + if (change.status !== 'untracked') return { ...change, hunks } + + const added = hunks.reduce((sum, hunk) => sum + hunk.lines.filter(line => line.startsWith('+')).length, 0) + return { ...change, added, hunks } +} + +function drawFiles($: Engine, kit: Kit, files: FileDiff[], hidden: number, closed: string[], columns: number) { + const { Box, Text, Button } = kit + const added = files.reduce((sum, file) => sum + file.added, 0) + const removed = files.reduce((sum, file) => sum + file.removed, 0) + const count = files.length + hidden + + // The list, and the name and two rules of each file, come off the character budget first. + const frame = files.reduce((sum, file) => sum + 2 * (file.path.length + FILE_ROW_CHARS) + 2 * columns, 0) + + // Each open file draws what is left of the row and character budgets. + let rowsLeft = MAX_TOTAL_ROWS + let charsLeft = Math.max(0, TEXT_BUDGET - frame) + const drawn = files.map(file => { + const isFolded = closed.includes(file.path) + const diff = isFolded || file.isBinary ? null : splitRows(file.hunks) + const { count, chars } = diff === null ? { count: 0, chars: 0 } : rowsWithin(diff, Math.min(MAX_ROWS, rowsLeft), charsLeft) + rowsLeft -= count + charsLeft -= chars + return drawFile($, kit, file, isFolded, diff, count, columns) + }) + + return Box({ + flexDirection: 'column', + children: [ + Box({ + flexDirection: 'row', + children: [ + Text({ bold: true, children: ['Uncommitted changes'] }), + Text({ dimColor: true, children: [` · ${count} ${count === 1 ? 'file' : 'files'} · `] }), + Text({ color: 'success', children: ['+' + added] }), + Text({ children: [' '] }), + Text({ color: 'error', children: ['-' + removed] }), + ], + }), + Text({ dimColor: true, children: ['↑↓ move · Enter jump to a file, or fold it · r refresh · Esc close'] }), + count === 0 ? Text({ dimColor: true, children: ['Working tree clean.'] }) : null, + // The list: a click takes the pane to the file. + ...files.map(file => + fileRow(kit, file, { + key: 'jump:' + file.path, + label: file.path, + // A pane that is not drawn cannot scroll; that is no error. + onPress: () => void $.ui.scroll({ to: { key: 'file:' + file.path }, in: PANE, block: 'start' }).catch(() => undefined), + }), + ), + ...drawn, + hidden > 0 ? Text({ dimColor: true, children: [`… ${hidden} more files not shown`] }) : null, + Box({ + flexDirection: 'row', + marginTop: 1, + children: [Button({ key: 'refresh', hotkey: 'r', onPress: () => void reloadNow($), children: ['Refresh'] })], + }), + ], + }) +} + +function drawFile( + $: Engine, + kit: Kit, + file: FileDiff, + isFolded: boolean, + diff: SplitDiff | null, + limit: number, + columns: number, +) { + const { Box, Text } = kit + const toggle = () => + void update($, folded, list => (list.includes(file.path) ? list.filter(path => path !== file.path) : [...list, file.path])) + // The name sits between two lines, the whole width of the pane. + const rule = () => Text({ dimColor: true, wrap: 'truncate-end', children: ['─'.repeat(columns)] }) + + return Box({ + flexDirection: 'column', + marginTop: 1, + children: [ + rule(), + fileRow(kit, file, { key: 'file:' + file.path, label: (isFolded ? '▸ ' : '▾ ') + file.path, onPress: toggle }), + rule(), + isFolded ? null : body(kit, file, diff, limit), + ], + }) +} + +/** A file's row: its name is the button, and its counts sit at the end of the row. */ +function fileRow({ Box, Text, Button }: Kit, file: FileDiff, { key, label, onPress }: { key: string; label: string; onPress: () => void }) { + return Box({ + flexDirection: 'row', + children: [ + Box({ flexGrow: 1, flexShrink: 1, children: [Button({ key, plain: true, onPress, children: [label] })] }), + Box({ flexShrink: 0, flexDirection: 'row', children: counts(Text, file) }), + ], + }) +} + +function counts(Text: Kit['Text'], file: FileDiff) { + const label = file.status === 'untracked' ? [Text({ dimColor: true, children: ['untracked '] })] : [] + if (file.isBinary) return [...label, Text({ dimColor: true, children: ['binary'] })] + return [ + ...label, + Text({ color: 'success', children: ['+' + file.added] }), + Text({ children: [' '] }), + Text({ color: 'error', children: ['-' + file.removed] }), + ] +} + +function body(kit: Kit, file: FileDiff, diff: SplitDiff | null, limit: number) { + const { Text } = kit + if (file.isBinary) return Text({ dimColor: true, children: ['Binary file.'] }) + if (file.hunks.length === 0) { + const empty = file.status === 'deleted' ? 'Empty file deleted.' : 'No changes to show.' + return Text({ dimColor: true, children: [empty] }) + } + + // A "\ No newline" mismatch has no split form: show git's own diff. + if (diff === null) return drawUnifiedHunks(kit, file.hunks, file.path) + + return drawDiff(kit, diff, { path: file.path, maxRows: limit, layout: 'pane' }) +} diff --git a/hooks/draw.ts b/hooks/draw.ts new file mode 100644 index 0000000..9d11926 --- /dev/null +++ b/hooks/draw.ts @@ -0,0 +1,247 @@ +import type { ElementTable } from 'claude-code' + +import type { Hunk } from '../types' +import type { Cell, SplitDiff, SplitRow } from './split-rows.js' + +export type Kit = Pick, 'Box' | 'Text' | 'Code'> + +/** + * Where a split diff sits. The rows are the same everywhere; only what + * surrounds them differs. + */ +const LAYOUTS = { + /** Under a tool call in the transcript: the summary line with the built-in's response marker, and a frame. */ + 'tool-result': { lead: ' ⎿ ', indent: 5, isFramed: true }, + /** In the pane: no summary (the file's row has the counts), no frame, the rule between the columns alone. */ + pane: { lead: null, indent: 0, isFramed: false }, +} as const + +export type DiffLayout = keyof typeof LAYOUTS + +/** + * Characters of diff text drawn in one tree. The engine draws only the first + * 100000 and cuts the rest, the "… more rows" with it; the margin is for the + * text around the diff. + */ +export const TEXT_BUDGET = 80_000 + +/** Lines of the rule between the columns; a row that wraps past it shows a gap in the rule. */ +const RULE_LENGTH = 16 + +/** Characters of a one-line hunk header (`@@ -12,1 +12,1 @@` and the mark). */ +const HEADER_LENGTH = 22 + +/** + * The characters of text a row puts in the tree. The engine draws only the + * first 100000 of a tree, so a long diff has to be counted before it is drawn. + */ +function rowChars(row: SplitRow) { + if (row.kind === 'gap') return 60 + const text = (cell: Cell | null) => (cell === null ? 1 : HEADER_LENGTH + cell.text.length) + // A changed pair is drawn as one hunk in each column. + if (row.changed && row.left !== null && row.right !== null) { + return 2 * (HEADER_LENGTH + row.left.text.length + row.right.text.length) + RULE_LENGTH + } + return text(row.left) + text(row.right) + RULE_LENGTH +} + +/** + * How many of the first rows of a diff fit in `maxRows` rows and `maxChars` + * characters of text, and the characters those rows take. + */ +export function rowsWithin(diff: SplitDiff, maxRows: number, maxChars: number) { + let count = 0 + let chars = 0 + for (const row of diff.rows.slice(0, maxRows)) { + const next = chars + rowChars(row) + if (next > maxChars) break + chars = next + count++ + } + return { count, chars } +} + +export type DiffOptions = { + /** The file's path, for the language of the highlighting. */ + path: string | undefined + /** Rows drawn before "… N more rows". */ + maxRows: number + layout: DiffLayout +} + +/** + * A split diff: the removed lines in the left column and the added ones in the + * right, with line numbers, under a "Added 3 lines, removed 1 line" summary + * where the layout has one. Every place that draws a diff goes through here. + */ +export function drawDiff(kit: Kit, diff: SplitDiff, { path, maxRows, layout }: DiffOptions) { + const { Box, Text } = kit + const { lead, indent, isFramed } = LAYOUTS[layout] + + return Box({ + flexDirection: 'column', + children: [ + lead === null + ? null + : Box({ + flexDirection: 'row', + children: [Text({ dimColor: true, children: [lead] }), ...summary(Text, diff.added, diff.removed)], + }), + Box({ + flexDirection: 'column', + marginLeft: indent, + ...(isFramed ? { borderStyle: 'round', borderDimColor: true } : {}), + children: drawRows(kit, diff, path, maxRows), + }), + ], + }) +} + +/** + * A diff as git prints it, for what has no split form (a file with a final + * newline on one side only): the engine's own diff drawing, one hunk after + * the other. + */ +export function drawUnifiedHunks({ Code }: Kit, hunks: readonly Hunk[], path: string | undefined) { + const source = hunks + .map(hunk => `@@ -${hunk.oldStart} +${hunk.newStart} @@\n` + hunk.lines.join('\n')) + .join('\n') + return Code({ source, format: 'diff', wrap: 'wrap', ...(path === undefined ? {} : { path }) }) +} + +/** + * The rows of a split diff, ready to sit in a column, with "… N more rows" + * after the first `maxRows`. + */ +function drawRows(kit: Kit, diff: SplitDiff, path: string | undefined, maxRows: number) { + const shown = diff.rows.slice(0, maxRows) + const hidden = diff.rows.length - shown.length + return [ + ...shown.map(row => drawRow(kit, row, path)), + hidden > 0 ? kit.Text({ dimColor: true, children: ['… ' + hidden + ' more rows'] }) : null, + ] +} + +function drawRow(kit: Kit, row: SplitRow, path: string | undefined) { + const { Box, Text } = kit + if (row.kind === 'gap') { + // The label sits in both columns, so a wide screen doesn't leave the right one blank. + const label = () => Text({ dimColor: true, children: ['⋯ ' + row.hidden + ' unchanged lines'] }) + // A blank line above and below sets the label apart; an empty 1-wide Box takes the separator's place so the columns line up. + const column = { width: '50%', flexShrink: 1, paddingY: 1 } as const + return Box({ + flexDirection: 'row', + children: [Box({ ...column, children: [label()] }), Box({ width: 1, flexShrink: 0 }), Box({ ...column, children: [label()] })], + }) + } + if (row.changed && row.left !== null && row.right !== null) { + return drawPair(kit, row.left, row.right, path) + } + return Box({ + flexDirection: 'row', + alignItems: 'stretch', + children: [ + drawCell(kit, row.left, row.changed ? 'removed' : 'same', path), + separator(kit), + drawCell(kit, row.right, row.changed ? 'added' : 'same', path), + ], + }) +} + +function drawCell( + { Box, Text, Code }: Kit, + cell: Cell | null, + kind: 'removed' | 'added' | 'same', + path: string | undefined, +) { + const column = { width: '50%', flexShrink: 1, flexDirection: 'row' } as const + + // Nothing on this side of the row: keep the column, draw nothing in it. + if (cell === null) return Box({ ...column, children: [Text({ children: [' '] })] }) + + // One-line hunk through the engine's diff renderer, so gutter, marker and + // add/remove colors are exactly the built-in diff's. + const n = cell.no + const header = + kind === 'removed' ? `@@ -${n},1 +${n},0 @@` : kind === 'added' ? `@@ -${n},0 +${n},1 @@` : `@@ -${n},1 +${n},1 @@` + const sign = kind === 'removed' ? '-' : kind === 'added' ? '+' : ' ' + + return Box({ + ...column, + children: [ + Code({ + source: header + '\n' + sign + cell.text, + format: 'diff', + wrap: 'wrap', + ...(path === undefined ? {} : { path }), + }), + ], + }) +} + +/** + * A removed line next to the line that replaced it. The engine draws the two as + * one hunk, which is what makes it tint the words that changed; each column + * then shows its own line of that hunk. Long lines are cut with an ellipsis, as + * a column clipped to one row cannot wrap. + */ +function drawPair(kit: Kit, left: Cell, right: Cell, path: string | undefined) { + const { Box, Code } = kit + const hunk = () => + Code({ + source: `@@ -${left.no},1 +${right.no},1 @@\n-${left.text}\n+${right.text}`, + format: 'diff', + wrap: 'truncate-end', + ...(path === undefined ? {} : { path }), + }) + const column = { width: '50%', flexShrink: 1, height: 1, overflow: 'hidden' } as const + return Box({ + flexDirection: 'row', + children: [ + Box({ ...column, children: [hunk()] }), + separator(kit), + Box({ + ...column, + children: [Box({ position: 'absolute', top: -1, left: 0, right: 0, children: [hunk()] })], + }), + ], + }) +} + +/** + * A dim vertical rule between the columns. It stretches to the row's height + * (wrapped lines make rows taller), so it draws a tall line out of flow and + * lets the clipped box cut it to the row. + */ +function separator({ Box, Text }: Kit) { + return Box({ + width: 1, + flexShrink: 0, + overflow: 'hidden', + children: [ + Box({ + position: 'absolute', + top: 0, + bottom: 0, + width: 1, + // One node: the glyphs wrap at the box's one column, a line each. + children: [Text({ dimColor: true, children: ['│'.repeat(RULE_LENGTH)] })], + }), + ], + }) +} + +/** "Added 3 lines, removed 1 line", the counts bold, as the built-in diff words it. */ +function summary(Text: Kit['Text'], added: number, removed: number) { + const noun = (n: number) => (n > 1 ? ' lines' : ' line') + const parts: ReturnType[] = [] + if (added > 0) { + parts.push(Text({ children: ['Added '] }), Text({ bold: true, children: [String(added)] })) + parts.push(Text({ children: [noun(added) + (removed > 0 ? ', ' : '')] })) + } + if (removed > 0) { + parts.push(Text({ children: [added === 0 ? 'Removed ' : 'removed '] })) + parts.push(Text({ bold: true, children: [String(removed)] }), Text({ children: [noun(removed)] })) + } + return parts +} diff --git a/hooks/git-diff.ts b/hooks/git-diff.ts new file mode 100644 index 0000000..19365b5 --- /dev/null +++ b/hooks/git-diff.ts @@ -0,0 +1,60 @@ +import type { Change, ChangeStatus, Hunk } from '../types' + +const STATUS: Record = { A: 'added', D: 'deleted' } + +const HUNK_HEADER = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/ + +/** + * Joins the output of `git diff --name-status -z --no-renames` and + * `git diff --numstat -z --no-renames` into one list, in git's order. + */ +export function parseChanges(nameStatus: string, numstat: string): Change[] { + const counts = new Map() + for (const record of numstat.split('\0')) { + const [added, removed, ...path] = record.split('\t') + if (path.length === 0) continue + // A binary file counts as '-' on both sides. + const isBinary = added === '-' + counts.set(path.join('\t'), { + added: isBinary ? 0 : Number(added), + removed: isBinary ? 0 : Number(removed), + isBinary, + }) + } + + const tokens = nameStatus.split('\0') + const changes: Change[] = [] + for (let i = 0; i + 1 < tokens.length; i += 2) { + const path = tokens[i + 1] as string + const count = counts.get(path) ?? { added: 0, removed: 0, isBinary: false } + changes.push({ path, status: STATUS[(tokens[i] as string).charAt(0)] ?? 'modified', ...count }) + } + return changes +} + +/** The files of `git ls-files --others -z`, as changes. */ +export function parseUntracked(output: string): Change[] { + return output + .split('\0') + .filter(path => path !== '') + .map(path => ({ path, status: 'untracked', added: 0, removed: 0, isBinary: false })) +} + +/** + * The hunks of the unified diff of one file. Everything before the first + * `@@` (the `diff --git`, mode and `---`/`+++` lines) is skipped. + */ +export function parseHunks(diff: string): Hunk[] { + const hunks: Hunk[] = [] + let current: Hunk | null = null + for (const line of diff.split('\n')) { + const header = HUNK_HEADER.exec(line) + if (header !== null) { + current = { oldStart: Number(header[1]), newStart: Number(header[2]), lines: [] } + hunks.push(current) + continue + } + if (current !== null && line !== '' && ' +-\\'.includes(line.charAt(0))) current.lines.push(line) + } + return hunks +} diff --git a/hooks/register.ts b/hooks/register.ts index 89edb33..7a28568 100644 --- a/hooks/register.ts +++ b/hooks/register.ts @@ -1,7 +1,9 @@ -import type { ElementTable, On } from 'claude-code' +import type { On } from 'claude-code' +import { registerDiffSplit } from './diff-command.js' +import { TEXT_BUDGET, drawDiff, rowsWithin } from './draw.js' +import type { Kit } from './draw.js' import { splitRows } from './split-rows.js' -import type { Cell, SplitRow } from './split-rows.js' /** Tools whose result is a diff this mod redraws. */ const TOOLS = ['Edit', 'Write'] @@ -9,8 +11,6 @@ const TOOLS = ['Edit', 'Write'] /** Rows drawn before "… N more rows". */ const MAX_ROWS = 200 -type Kit = Pick, 'Box' | 'Text' | 'Code'> - const isRecord = (value: unknown): value is Record => typeof value === 'object' && value !== null @@ -21,6 +21,8 @@ const isRecord = (value: unknown): value is Record => * @param on the engine's registrar */ export function register(on: On) { + registerDiffSplit(on) + on('ui.render', { component: 'ToolResult' }, async ($, e, next) => { const { tool, output, isErrored } = e.props if (!TOOLS.includes(tool) || isErrored || !isRecord(output)) return next(e) @@ -32,158 +34,11 @@ export function register(on: On) { if (diff === null) return next(e) const kit: Kit = $.ui.resolve(e) - const { Box, Text } = kit const path = typeof output.filePath === 'string' ? output.filePath : undefined - const shown = diff.rows.slice(0, MAX_ROWS) - const hidden = diff.rows.length - shown.length - - return Box({ - flexDirection: 'column', - children: [ - // The built-in summary line, with its response marker. - Box({ - flexDirection: 'row', - children: [ - Text({ dimColor: true, children: [' ⎿ '] }), - ...summary(Text, diff.added, diff.removed), - ], - }), - // The rows sit in a frame under the summary text, as the built-in diff does. - Box({ - flexDirection: 'column', - marginLeft: 5, - borderStyle: 'round', - borderDimColor: true, - children: [ - ...shown.map(row => drawRow(kit, row, path)), - hidden > 0 ? Text({ dimColor: true, children: ['… ' + hidden + ' more rows'] }) : null, - ], - }), - ], - }) - }) -} - -function drawRow(kit: Kit, row: SplitRow, path: string | undefined) { - const { Box, Text } = kit - if (row.kind === 'gap') { - // The label sits in both columns, so a wide screen doesn't leave the right one blank. - const label = () => Text({ dimColor: true, children: ['⋯ ' + row.hidden + ' unchanged lines'] }) - // A blank line above and below sets the label apart; an empty 1-wide Box takes the separator's place so the columns line up. - const column = { width: '50%', flexShrink: 1, paddingY: 1 } as const - return Box({ - flexDirection: 'row', - children: [Box({ ...column, children: [label()] }), Box({ width: 1, flexShrink: 0 }), Box({ ...column, children: [label()] })], - }) - } - if (row.changed && row.left !== null && row.right !== null) { - return drawPair(kit, row.left, row.right, path) - } - return Box({ - flexDirection: 'row', - alignItems: 'stretch', - children: [ - drawCell(kit, row.left, row.changed ? 'removed' : 'same', path), - separator(kit), - drawCell(kit, row.right, row.changed ? 'added' : 'same', path), - ], - }) -} - -function drawCell( - { Box, Text, Code }: Kit, - cell: Cell | null, - kind: 'removed' | 'added' | 'same', - path: string | undefined, -) { - const column = { width: '50%', flexShrink: 1, flexDirection: 'row' } as const + // The same limits as the pane: rows, and the characters the engine draws of a tree. + const { count } = rowsWithin(diff, MAX_ROWS, TEXT_BUDGET) - // Nothing on this side of the row: keep the column, draw nothing in it. - if (cell === null) return Box({ ...column, children: [Text({ children: [' '] })] }) - - // One-line hunk through the engine's diff renderer, so gutter, marker and - // add/remove colors are exactly the built-in diff's. - const n = cell.no - const header = - kind === 'removed' ? `@@ -${n},1 +${n},0 @@` : kind === 'added' ? `@@ -${n},0 +${n},1 @@` : `@@ -${n},1 +${n},1 @@` - const sign = kind === 'removed' ? '-' : kind === 'added' ? '+' : ' ' - - return Box({ - ...column, - children: [ - Code({ - source: header + '\n' + sign + cell.text, - format: 'diff', - wrap: 'wrap', - ...(path === undefined ? {} : { path }), - }), - ], + return drawDiff(kit, diff, { path, maxRows: count, layout: 'tool-result' }) }) } - -/** - * A removed line next to the line that replaced it. The engine draws the two as - * one hunk, which is what makes it tint the words that changed; each column - * then shows its own line of that hunk. Long lines are cut with an ellipsis, as - * a column clipped to one row cannot wrap. - */ -function drawPair(kit: Kit, left: Cell, right: Cell, path: string | undefined) { - const { Box, Code } = kit - const hunk = () => - Code({ - source: `@@ -${left.no},1 +${right.no},1 @@\n-${left.text}\n+${right.text}`, - format: 'diff', - wrap: 'truncate-end', - ...(path === undefined ? {} : { path }), - }) - const column = { width: '50%', flexShrink: 1, height: 1, overflow: 'hidden' } as const - return Box({ - flexDirection: 'row', - children: [ - Box({ ...column, children: [hunk()] }), - separator(kit), - Box({ - ...column, - children: [Box({ position: 'absolute', top: -1, left: 0, right: 0, children: [hunk()] })], - }), - ], - }) -} - -/** - * A dim vertical rule between the columns. It stretches to the row's height - * (wrapped lines make rows taller), so it draws a tall line out of flow and - * lets the clipped box cut it to the row. - */ -function separator({ Box, Text }: Kit) { - return Box({ - width: 1, - flexShrink: 0, - overflow: 'hidden', - children: [ - Box({ - position: 'absolute', - top: 0, - bottom: 0, - flexDirection: 'column', - children: Array.from({ length: 20 }, () => Text({ dimColor: true, children: ['│'] })), - }), - ], - }) -} - -/** "Added 3 lines, removed 1 line", the counts bold, as the built-in diff words it. */ -function summary(Text: Kit['Text'], added: number, removed: number) { - const noun = (n: number) => (n > 1 ? ' lines' : ' line') - const parts: ReturnType[] = [] - if (added > 0) { - parts.push(Text({ children: ['Added '] }), Text({ bold: true, children: [String(added)] })) - parts.push(Text({ children: [noun(added) + (removed > 0 ? ', ' : '')] })) - } - if (removed > 0) { - parts.push(Text({ children: [added === 0 ? 'Removed ' : 'removed '] })) - parts.push(Text({ bold: true, children: [String(removed)] }), Text({ children: [noun(removed)] })) - } - return parts -} diff --git a/tests/diffsplit-pane.test.ts b/tests/diffsplit-pane.test.ts new file mode 100644 index 0000000..81e7abf --- /dev/null +++ b/tests/diffsplit-pane.test.ts @@ -0,0 +1,233 @@ +import type { On, UiPane } from 'claude-code' +import { expect, test } from 'claude-code/testing' + +// The test runner has it; the types of the testing module do not declare it. +declare function setTimeout(fn: (value: unknown) => void, ms: number): unknown + +const PANE = { + plugin: 'cc-split-diff-view', + component: 'Pane', + requestId: 'diffsplit', + surface: 'terminal', + props: { + title: 'Split Diff', + isFocused: false, + bodyColumns: 100, + placement: 'dock', + scroll: { offset: 0, bodyRows: 30 }, + view: {}, + }, +} as const + +const RUN = { + command: 'diffsplit', + args: '', + origin: { kind: 'composer' }, + presentation: { isFullscreen: true, columns: 120 }, +} as const + +/** A new file of `lines` added lines, as `git diff` prints it. */ +const added = (lines: number) => + [ + 'diff --git a/f.txt b/f.txt', + '--- /dev/null', + '+++ b/f.txt', + `@@ -0,0 +1,${lines} @@`, + ...Array.from({ length: lines }, (_, i) => `+line number ${i} with some text in it`), + '', + ].join('\n') + +/** The engine below the mod: an in-memory state, and git answering for `files` files of `lines` lines. */ +function engine(on: On, files: number, lines: number) { + // What the tests change and read: the tree git answers for, and how often the pane's list was stored. + const tree = { files, lines, loads: 0 } + const store = new Map() + on('state.get', (_, e) => ({ value: store.get(e.key) ?? { value: undefined, version: 0 } })) + on('state.set', (_, e) => { + const version = (store.get(e.key)?.version ?? 0) + 1 + store.set(e.key, { value: e.value, version }) + if (e.key === 'snapshot') tree.loads++ + return { value: { isSet: true, version } } + }) + on('command.register', () => ({ value: { command: 'diffsplit' } })) + on('ui.open', () => ({ value: { isPlaced: true } })) + on('process.run', (_, e) => { + const out = (stdout: string) => ({ + value: { exitCode: 0, stdout, stderr: '', isStdoutTruncated: false, isStderrTruncated: false }, + }) + const git = e.argv.join(' ') + const names = Array.from({ length: tree.files }, (_, i) => `f${i}.txt`) + if (git.includes('--name-status')) return out(names.map(name => `A\0${name}\0`).join('')) + if (git.includes('--numstat')) return out(names.map(name => `${tree.lines}\t0\t${name}\0`).join('')) + if (git.includes('rev-parse')) return out('true\n') + if (git.includes('ls-files')) return out('') + // The diff of the whole tree, as the pane reads it to tell if anything changed. + if (!git.includes(' -- ')) return out(names.map(() => added(tree.lines)).join('')) + return out(added(tree.lines)) + }) + return tree +} + +/** Lets the work a hook started behind its answer run: a refresh is not awaited by the tool. */ +async function settle() { + await new Promise(resolve => setTimeout(resolve, 50)) +} + +test('the pane draws every file open, with its counts', async ($, on) => { + engine(on, 2, 3) + await $.command.run(RUN) + + const ui = await $.ui.mount(PANE) + expect((await ui.find({ type: 'Text', text: /2 files/ }))?.text).toContain('2 files') + expect((await ui.findAll({ type: 'Text', text: /^\+3$/ })).length).toBeGreaterThan(0) + await ui.unmount() +}) + +test('the list at the top has a row per file, and a click on it goes through', async ($, on) => { + engine(on, 3, 2) + await $.command.run(RUN) + + const ui = await $.ui.mount(PANE) + // One row in the list and one above its diff, per file. + for (const name of ['f0.txt', 'f1.txt', 'f2.txt']) { + expect(await ui.find({ type: 'Button', key: 'jump:' + name })).toBeDefined() + expect(await ui.find({ type: 'Button', key: 'file:' + name })).toBeDefined() + } + // The counts sit in the row, after the name. + expect((await ui.findAll({ type: 'Text', text: /^\+2$/ })).length).toBeGreaterThanOrEqual(6) + + // The test engine has no scrolling to answer, so the target is not checked here: the + // click must only leave the pane standing, and the key it aims at (`file:`) is drawn above. + await ui.press({ key: 'jump:f1.txt' }) + expect(await ui.find({ type: 'Button', key: 'file:f1.txt' })).toBeDefined() + await ui.unmount() +}) + +test('each file name sits between two lines the width of the pane', async ($, on) => { + engine(on, 2, 2) + await $.command.run(RUN) + + const ui = await $.ui.mount(PANE) + const rules = await ui.findAll({ type: 'Text', text: /^─+$/ }) + expect(rules.map(rule => rule.text)).toEqual(Array(4).fill('─'.repeat(100))) + await ui.unmount() +}) + +// The pane and the result of an Edit draw a diff through the same code: same summary, same rows. +test('a tool result and the pane draw the same diff', async ($, on) => { + engine(on, 1, 2) + await $.command.run(RUN) + + const result = await $.ui.mount({ + plugin: 'cc-split-diff-view', + component: 'ToolResult', + requestId: 'edit-1', + surface: 'terminal', + props: { + tool_use_id: 'toolu_1', + tool: 'Edit', + isErrored: false, + output: { + filePath: '/tmp/f.txt', + structuredPatch: [{ oldStart: 1, oldLines: 2, newStart: 1, newLines: 2, lines: [' keep', '-old', '+new'] }], + }, + }, + }) + const pane = await $.ui.mount(PANE) + + // A hunk of the diff and the rule between the columns come out of both. + for (const ui of [result, pane]) { + expect(await ui.find({ type: 'Code', text: /^@@ -\d+,\d+ \+\d+,\d+ @@/ })).toBeDefined() + expect(await ui.find({ type: 'Text', text: /^│+$/ })).toBeDefined() + } + // Only the transcript has the summary line and its response marker: in the pane + // the counts are on the file's row. + expect(await result.find({ type: 'Text', text: /^Added $/ })).toBeDefined() + expect(await result.find({ type: 'Text', text: /⎿/ })).toBeDefined() + expect(await pane.find({ type: 'Text', text: /^Added $/ })).toBeUndefined() + expect(await pane.find({ type: 'Text', text: /⎿/ })).toBeUndefined() + await result.unmount() + await pane.unmount() +}) + +/** The pane is open: what `$.ui.panes` answers. */ +const OPEN = [{ id: 'diffsplit' }] as unknown as readonly UiPane[] + +test('the open pane reloads by itself after a tool changes the tree', async ($, on) => { + const tree = engine(on, 1, 2) + on('clock.every', () => ({ value: undefined })) + on('ui.panes', () => ({ value: OPEN })) + on('tool.call', () => ({ result: {} })) + await $.command.run(RUN) + expect(tree.loads).toBe(1) + + tree.files = 2 + await $.tool.call({ tool: 'Bash', command: 'touch f1.txt' }) + await settle() + expect(tree.loads).toBe(2) + + const ui = await $.ui.mount(PANE) + expect(await ui.find({ type: 'Button', key: 'file:f1.txt' })).toBeDefined() + await ui.unmount() +}) + +test('a tool that changes nothing leaves the pane as it is', async ($, on) => { + const tree = engine(on, 1, 2) + on('clock.every', () => ({ value: undefined })) + on('ui.panes', () => ({ value: OPEN })) + on('tool.call', () => ({ result: {} })) + await $.command.run(RUN) + + await $.tool.call({ tool: 'Bash', command: 'true' }) + await settle() + expect(tree.loads).toBe(1) +}) + +test('a closed pane is not reloaded', async ($, on) => { + const tree = engine(on, 1, 2) + on('clock.every', () => ({ value: undefined })) + on('ui.panes', () => ({ value: [] })) + on('tool.call', () => ({ result: {} })) + await $.command.run(RUN) + + tree.files = 2 + await $.tool.call({ tool: 'Bash', command: 'touch f1.txt' }) + await settle() + expect(tree.loads).toBe(1) +}) + +// The engine draws only the first 100000 characters of a tree: the chat is held to the +// same budget as the pane, or a result with long lines loses its end. +test('a tool result with long lines stops at the text budget and says so', async ($) => { + const ui = await $.ui.mount({ + plugin: 'cc-split-diff-view', + component: 'ToolResult', + requestId: 'edit-2', + surface: 'terminal', + props: { + tool_use_id: 'toolu_2', + tool: 'Write', + isErrored: false, + output: { + filePath: '/tmp/long.txt', + structuredPatch: [ + { oldStart: 1, oldLines: 0, newStart: 1, newLines: 200, lines: Array.from({ length: 200 }, () => '+' + 'x'.repeat(600)) }, + ], + }, + }, + }) + + // 639 characters a row, 80000 characters of budget: 125 rows, 75 left out. + expect((await ui.find({ type: 'Text', text: /more rows/ }))?.text).toBe('… 75 more rows') + await ui.unmount() +}) + +// The engine refuses a tree of more than 20000 nodes, and the pane then draws nothing. +test('a pane with many long diffs still draws, and says what it left out', async ($, on) => { + engine(on, 8, 300) + await $.command.run(RUN) + + const ui = await $.ui.mount(PANE) + expect(await ui.find({ type: 'Text', text: /more rows/ })).toBeDefined() + await ui.unmount() +}) diff --git a/tests/git-diff.test.ts b/tests/git-diff.test.ts new file mode 100644 index 0000000..98d3b70 --- /dev/null +++ b/tests/git-diff.test.ts @@ -0,0 +1,66 @@ +import { expect, test } from 'claude-code/testing' + +import { parseChanges, parseHunks, parseUntracked } from '../hooks/git-diff.js' +import { splitRows } from '../hooks/split-rows.js' + +test('joins name-status and numstat into one list', async () => { + const nameStatus = ['M', 'src/a.ts', 'A', 'new file.ts', 'D', 'gone.ts', 'M', 'logo.png', ''].join('\0') + const numstat = ['3\t1\tsrc/a.ts', '10\t0\tnew file.ts', '0\t7\tgone.ts', '-\t-\tlogo.png', ''].join('\0') + + expect(parseChanges(nameStatus, numstat)).toEqual([ + { path: 'src/a.ts', status: 'modified', added: 3, removed: 1, isBinary: false }, + { path: 'new file.ts', status: 'added', added: 10, removed: 0, isBinary: false }, + { path: 'gone.ts', status: 'deleted', added: 0, removed: 7, isBinary: false }, + { path: 'logo.png', status: 'modified', added: 0, removed: 0, isBinary: true }, + ]) +}) + +test('an empty diff has no changes', async () => { + expect(parseChanges('', '')).toEqual([]) +}) + +test('lists untracked files', async () => { + expect(parseUntracked(['a.txt', 'dir/b c.txt', ''].join('\0'))).toEqual([ + { path: 'a.txt', status: 'untracked', added: 0, removed: 0, isBinary: false }, + { path: 'dir/b c.txt', status: 'untracked', added: 0, removed: 0, isBinary: false }, + ]) +}) + +const diff = [ + 'diff --git a/f.txt b/f.txt', + 'index 1111111..2222222 100644', + '--- a/f.txt', + '+++ b/f.txt', + '@@ -1,3 +1,3 @@', + ' keep', + '-old', + '+new', + ' tail', + '@@ -20 +20,2 @@ function x() {', + '-gone', + '+one', + '+two', + '\\ No newline at end of file', + '', +].join('\n') + +test('reads hunks and skips the file header', async () => { + expect(parseHunks(diff)).toEqual([ + { oldStart: 1, newStart: 1, lines: [' keep', '-old', '+new', ' tail'] }, + { oldStart: 20, newStart: 20, lines: ['-gone', '+one', '+two', '\\ No newline at end of file'] }, + ]) +}) + +test('a diff with no hunk (binary, mode change) gives none', async () => { + expect(parseHunks('diff --git a/x.png b/x.png\nBinary files a/x.png and b/x.png differ\n')).toEqual([]) +}) + +test('hunks from git feed the split view', async () => { + const rows = splitRows(parseHunks(diff.replace('\\ No newline at end of file\n', ''))) + expect(rows?.added).toBe(3) + expect(rows?.removed).toBe(2) +}) + +test('a missing final newline on one side has no split form', async () => { + expect(splitRows(parseHunks(diff))).toBeNull() +}) diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..f071fe9 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,42 @@ +/** How git sees a changed file. */ +export type ChangeStatus = 'modified' | 'added' | 'deleted' | 'untracked' + +/** One changed file in the `/diffsplit` pane. */ +export type Change = { + path: string + status: ChangeStatus + added: number + removed: number + /** Git cannot show a text diff of the file. */ + isBinary: boolean +} + +/** One hunk of a unified diff; `lines` keep their ' ', '-', '+' or '\' mark. */ +export type Hunk = { + oldStart: number + newStart: number + lines: string[] +} + +/** A changed file with the diff git gave for it. */ +export type FileDiff = Change & { hunks: Hunk[] } + +/** What `git` reported when the pane was last loaded. */ +export type Snapshot = + | { + kind: 'changes' + files: FileDiff[] + /** Changed files past the limit: counted, not shown. */ + hiddenFiles: number + } + | { kind: 'error'; message: string } + +declare module 'claude-code' { + interface PluginState { + 'cc-split-diff-view': { + snapshot: Shaped + /** Paths of the files the person folded. */ + folded: Shaped + } + } +} From b3f543461a4de6aac43ea0ecfd275d7acb8e2838 Mon Sep 17 00:00:00 2001 From: oskarnrk Date: Fri, 23 Oct 2026 13:48:18 +0200 Subject: [PATCH 2/4] chore: bump to 1.1.0 and mention /diffsplit in the descriptions Co-Authored-By: Claude Sonnet 5.5 --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 40c715e..ce2ed62 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ { "name": "cc-split-diff-view", "source": "./", - "description": "Edit and Write diffs in two side-by-side columns instead of +/- lines" + "description": "Edit and Write diffs in two side-by-side columns instead of +/- lines, and /diffsplit to review all uncommitted changes the same way" } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index c5b7a78..b9942bf 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "cc-split-diff-view", - "version": "1.0.0", - "description": "Draws Edit and Write diffs in two side-by-side columns: removed lines on the left, added lines on the right, in Claude Code's own diff colors", + "version": "1.1.0", + "description": "Draws Edit and Write diffs in two side-by-side columns: removed lines on the left, added lines on the right, in Claude Code's own diff colors. Adds /diffsplit, a pane that reviews all the uncommitted changes the same way", "types": "./types/index.d.ts", "author": { "name": "oskarnrk", "url": "https://github.com/oskarnrk" }, "repository": "https://github.com/neteye-platform/cc-split-diff-view" From 1f4f04b80c96083e7240b7249b70ffbd506f1d50 Mon Sep 17 00:00:00 2001 From: oskarnrk Date: Fri, 23 Oct 2026 14:25:30 +0200 Subject: [PATCH 3/4] fix: name tracked files from the working directory and budget unified diffs Two review findings on the /diffsplit pane. Paths: git names the tracked files from the root of the repository, but the untracked ones (ls-files --others) from the working directory. In a subfolder the diff of a tracked file, asked with the root-relative path, came out empty. The calls on tracked files now take --relative, so both lists use the same paths and a path works as a pathspec for its diff. The --no-index call for untracked files keeps its arguments. The list is now limited to the working directory, as the untracked files were. Unified diffs: a diff with no split form (a final newline on one side only) was drawn whole in one Code element, outside the row and character budgets, without the limit on the length of a line, with control characters left in and without the marker for what is left out. fitHunks now shares the budgets out for the split rows and the unified lines alike; the lines are made drawable as the split rows are, and "... N more rows" says what was cut. Add tests for the arguments of the git calls and for the unified diffs. Co-Authored-By: Claude Sonnet 5.5 --- hooks/diff-command.ts | 54 +++++++++++++-------------- hooks/draw.ts | 55 ++++++++++++++++++++++++---- hooks/split-rows.ts | 2 +- tests/diffsplit-pane.test.ts | 71 ++++++++++++++++++++++++++++++++++-- 4 files changed, 141 insertions(+), 41 deletions(-) diff --git a/hooks/diff-command.ts b/hooks/diff-command.ts index a61fdef..a14dcb6 100644 --- a/hooks/diff-command.ts +++ b/hooks/diff-command.ts @@ -1,11 +1,9 @@ import { atom, read, update } from 'claude-code' import type { ElementTable, Hook, On } from 'claude-code' -import { TEXT_BUDGET, drawDiff, drawUnifiedHunks, rowsWithin } from './draw.js' -import type { Kit as DrawKit } from './draw.js' +import { TEXT_BUDGET, drawFit, fitHunks } from './draw.js' +import type { Fit, Kit as DrawKit } from './draw.js' import { parseChanges, parseHunks, parseUntracked } from './git-diff.js' -import { splitRows } from './split-rows.js' -import type { SplitDiff } from './split-rows.js' import type { Change, FileDiff, Snapshot } from '../types' const COMMAND = 'diffsplit' @@ -38,6 +36,15 @@ const EMPTY_TREE = '4b825dc642cb6eb9a060e54bf8d69288fbee4904' const GIT = ['git', '--no-pager', '-c', 'core.quotepath=off'] const DIFF = ['diff', '--no-color', '--no-ext-diff', '--no-renames'] +/** + * The same for the tracked files. Git names them from the root of the + * repository, but the untracked ones (`ls-files --others`) from the working + * directory; `--relative` names both from the working directory, so a path + * from one list works as a pathspec of the diff in the other. It also keeps the + * list to the working directory, as `ls-files` does. + */ +const TRACKED = [...DIFF, '--relative'] + // Change the tag when the fields of a value change: it declines what an // earlier version stored, which outlives a reload. const snapshot = atom({ plugin: 'cc-split-diff-view', key: 'snapshot' } as const, null, { shape: 'snapshot-2' }) @@ -126,7 +133,7 @@ async function baseOf($: Engine) { */ async function fingerprint($: Engine): Promise { const git = (args: string[], stdin?: string) => $.process.run([...GIT, ...args], stdin === undefined ? undefined : { stdin }) - const [diff, others] = await Promise.all([git([...DIFF, await baseOf($)]), git(['ls-files', '--others', '--exclude-standard', '-z'])]) + const [diff, others] = await Promise.all([git([...TRACKED, await baseOf($)]), git(['ls-files', '--others', '--exclude-standard', '-z'])]) const paths = others.stdout.split('\0').filter(path => path !== '') const hashes = paths.length === 0 ? '' : (await git(['hash-object', '--stdin-paths'], paths.join('\n'))).stdout return [diff.stdout, others.stdout, hashes].join('\u0001') @@ -171,8 +178,8 @@ async function ask($: Engine): Promise { const base = await baseOf($) const [nameStatus, numstat, others] = await Promise.all([ - git([...DIFF, '--name-status', '-z', base]), - git([...DIFF, '--numstat', '-z', base]), + git([...TRACKED, '--name-status', '-z', base]), + git([...TRACKED, '--numstat', '-z', base]), git(['ls-files', '--others', '--exclude-standard', '-z']), ]) if (nameStatus.exitCode !== 0) return { kind: 'error', message: nameStatus.stderr.trim() || 'git diff failed.' } @@ -191,7 +198,7 @@ async function diffOf($: Engine, change: Change, base: string): Promise { const isFolded = closed.includes(file.path) - const diff = isFolded || file.isBinary ? null : splitRows(file.hunks) - const { count, chars } = diff === null ? { count: 0, chars: 0 } : rowsWithin(diff, Math.min(MAX_ROWS, rowsLeft), charsLeft) - rowsLeft -= count - charsLeft -= chars - return drawFile($, kit, file, isFolded, diff, count, columns) + const isShown = !isFolded && !file.isBinary && file.hunks.length > 0 + const fit = isShown ? fitHunks(file.hunks, Math.min(MAX_ROWS, rowsLeft), charsLeft) : null + rowsLeft -= fit?.count ?? 0 + charsLeft -= fit?.chars ?? 0 + return drawFile($, kit, file, isFolded, fit, columns) }) return Box({ @@ -255,15 +262,7 @@ function drawFiles($: Engine, kit: Kit, files: FileDiff[], hidden: number, close }) } -function drawFile( - $: Engine, - kit: Kit, - file: FileDiff, - isFolded: boolean, - diff: SplitDiff | null, - limit: number, - columns: number, -) { +function drawFile($: Engine, kit: Kit, file: FileDiff, isFolded: boolean, fit: Fit | null, columns: number) { const { Box, Text } = kit const toggle = () => void update($, folded, list => (list.includes(file.path) ? list.filter(path => path !== file.path) : [...list, file.path])) @@ -277,7 +276,7 @@ function drawFile( rule(), fileRow(kit, file, { key: 'file:' + file.path, label: (isFolded ? '▸ ' : '▾ ') + file.path, onPress: toggle }), rule(), - isFolded ? null : body(kit, file, diff, limit), + isFolded ? null : body(kit, file, fit), ], }) } @@ -304,16 +303,13 @@ function counts(Text: Kit['Text'], file: FileDiff) { ] } -function body(kit: Kit, file: FileDiff, diff: SplitDiff | null, limit: number) { +function body(kit: Kit, file: FileDiff, fit: Fit | null) { const { Text } = kit if (file.isBinary) return Text({ dimColor: true, children: ['Binary file.'] }) - if (file.hunks.length === 0) { + if (fit === null) { const empty = file.status === 'deleted' ? 'Empty file deleted.' : 'No changes to show.' return Text({ dimColor: true, children: [empty] }) } - // A "\ No newline" mismatch has no split form: show git's own diff. - if (diff === null) return drawUnifiedHunks(kit, file.hunks, file.path) - - return drawDiff(kit, diff, { path: file.path, maxRows: limit, layout: 'pane' }) + return drawFit(kit, fit, file.path) } diff --git a/hooks/draw.ts b/hooks/draw.ts index 9d11926..6f6b788 100644 --- a/hooks/draw.ts +++ b/hooks/draw.ts @@ -1,6 +1,7 @@ import type { ElementTable } from 'claude-code' import type { Hunk } from '../types' +import { drawable, splitRows } from './split-rows.js' import type { Cell, SplitDiff, SplitRow } from './split-rows.js' export type Kit = Pick, 'Box' | 'Text' | 'Code'> @@ -98,15 +99,53 @@ export function drawDiff(kit: Kit, diff: SplitDiff, { path, maxRows, layout }: D } /** - * A diff as git prints it, for what has no split form (a file with a final - * newline on one side only): the engine's own diff drawing, one hunk after - * the other. + * What fits of a file's hunks in the rows and characters left: the split rows, + * or, for what has no split form (a final newline on one side only), the lines + * of git's own diff. Either way `count` rows and `chars` characters are spent. */ -export function drawUnifiedHunks({ Code }: Kit, hunks: readonly Hunk[], path: string | undefined) { - const source = hunks - .map(hunk => `@@ -${hunk.oldStart} +${hunk.newStart} @@\n` + hunk.lines.join('\n')) - .join('\n') - return Code({ source, format: 'diff', wrap: 'wrap', ...(path === undefined ? {} : { path }) }) +export type Fit = + | { kind: 'split'; diff: SplitDiff; count: number; chars: number } + | { kind: 'unified'; lines: string[]; total: number; count: number; chars: number } + +/** + * The one place that shares the row and character budgets out, for the split + * rows and the unified lines alike. Lines are made drawable as the split rows + * are: tabs laid out, control characters dropped, cut at the engine's limit. + */ +export function fitHunks(hunks: readonly Hunk[], maxRows: number, maxChars: number): Fit { + const diff = splitRows(hunks) + if (diff !== null) return { kind: 'split', diff, ...rowsWithin(diff, maxRows, maxChars) } + + const all = hunks.flatMap(hunk => [`@@ -${hunk.oldStart} +${hunk.newStart} @@`, ...hunk.lines].map(drawable)) + const lines: string[] = [] + let chars = 0 + for (const line of all.slice(0, maxRows)) { + // The line break is a character of the source too. + if (chars + line.length + 1 > maxChars) break + chars += line.length + 1 + lines.push(line) + } + return { kind: 'unified', lines, total: all.length, count: lines.length, chars } +} + +/** + * Draws a fit: the split diff in the pane's layout, or git's own diff, in the + * engine's drawing, with "… N more rows" after what was cut. + */ +export function drawFit(kit: Kit, fit: Fit, path: string | undefined) { + if (fit.kind === 'split') return drawDiff(kit, fit.diff, { path, maxRows: fit.count, layout: 'pane' }) + + const { Box, Text, Code } = kit + const hidden = fit.total - fit.count + return Box({ + flexDirection: 'column', + children: [ + fit.count === 0 + ? null + : Code({ source: fit.lines.join('\n'), format: 'diff', wrap: 'wrap', ...(path === undefined ? {} : { path }) }), + hidden > 0 ? Text({ dimColor: true, children: ['… ' + hidden + ' more rows'] }) : null, + ], + }) } /** diff --git a/hooks/split-rows.ts b/hooks/split-rows.ts index a1ff59a..284c436 100644 --- a/hooks/split-rows.ts +++ b/hooks/split-rows.ts @@ -32,7 +32,7 @@ const MAX_TEXT = 10_000 * invisible character dropped (a stray '\r' from a CRLF file would otherwise * get the whole tree refused), and cut to the engine's cap. */ -const drawable = (text: string) => +export const drawable = (text: string) => text .replace(/\t/g, TAB) .replace(/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/gu, '') diff --git a/tests/diffsplit-pane.test.ts b/tests/diffsplit-pane.test.ts index 81e7abf..422e000 100644 --- a/tests/diffsplit-pane.test.ts +++ b/tests/diffsplit-pane.test.ts @@ -40,7 +40,7 @@ const added = (lines: number) => /** The engine below the mod: an in-memory state, and git answering for `files` files of `lines` lines. */ function engine(on: On, files: number, lines: number) { // What the tests change and read: the tree git answers for, and how often the pane's list was stored. - const tree = { files, lines, loads: 0 } + const tree = { files, lines, loads: 0, untracked: [] as string[], calls: [] as string[], diff: null as string | null } const store = new Map() on('state.get', (_, e) => ({ value: store.get(e.key) ?? { value: undefined, version: 0 } })) on('state.set', (_, e) => { @@ -56,14 +56,16 @@ function engine(on: On, files: number, lines: number) { value: { exitCode: 0, stdout, stderr: '', isStdoutTruncated: false, isStderrTruncated: false }, }) const git = e.argv.join(' ') + tree.calls.push(git) const names = Array.from({ length: tree.files }, (_, i) => `f${i}.txt`) if (git.includes('--name-status')) return out(names.map(name => `A\0${name}\0`).join('')) if (git.includes('--numstat')) return out(names.map(name => `${tree.lines}\t0\t${name}\0`).join('')) if (git.includes('rev-parse')) return out('true\n') - if (git.includes('ls-files')) return out('') + if (git.includes('ls-files')) return out(tree.untracked.map(path => path + '\0').join('')) + if (git.includes('hash-object')) return out('') // The diff of the whole tree, as the pane reads it to tell if anything changed. if (!git.includes(' -- ')) return out(names.map(() => added(tree.lines)).join('')) - return out(added(tree.lines)) + return out(tree.diff ?? added(tree.lines)) }) return tree } @@ -150,6 +152,69 @@ test('a tool result and the pane draw the same diff', async ($, on) => { await pane.unmount() }) +// Git names the tracked files from the root of the repository and the untracked ones from the +// working directory; `--relative` makes the tracked ones follow the working directory too, or +// a path from the list is no pathspec for the diff of the file when the session sits in a subfolder. +test('the diff of the tracked files is named from the working directory', async ($, on) => { + const tree = engine(on, 1, 2) + tree.untracked = ['new.txt'] + on('clock.every', () => ({ value: undefined })) + await $.command.run(RUN) + + const diffs = tree.calls.filter(call => call.includes(' diff ')) + const untracked = diffs.filter(call => call.includes('--no-index')) + const tracked = diffs.filter(call => !call.includes('--no-index')) + + // The list (name-status, numstat), the diff of the file and the fingerprint. + expect(tracked.length).toBeGreaterThanOrEqual(4) + expect(tracked.filter(call => !call.includes('--relative'))).toEqual([]) + // The `--no-index` call keeps the arguments it had. + expect(untracked).toHaveLength(1) + expect(untracked[0]).not.toContain('--relative') +}) + +/** A diff with no split form: the old side lacks the final newline and the new side has it. */ +const noSplit = (lines: number, text: (side: '-' | '+', i: number) => string) => + [ + `@@ -1,${lines} +1,${lines} @@`, + ...Array.from({ length: lines }, (_, i) => text('-', i)), + '\\ No newline at end of file', + ...Array.from({ length: lines }, (_, i) => text('+', i)), + '', + ].join('\n') + +// What has no split form is drawn from git's own lines, but out of the same budgets as the rest. +test('a diff with no split form keeps to the rows of the file and of the pane', async ($, on) => { + const tree = engine(on, 3, 300) + tree.diff = noSplit(300, (side, i) => `${side}line number ${i}`) + on('clock.every', () => ({ value: undefined })) + await $.command.run(RUN) + + const ui = await $.ui.mount(PANE) + const sources = (await ui.findAll({ type: 'Code' })).map(code => code.text.split('\n').length) + // 3 files of 602 lines: no file past 500 rows, and not more than 1200 in all. + expect(sources).toHaveLength(3) + expect(Math.max(...sources)).toBeLessThanOrEqual(500) + expect(sources.reduce((sum, rows) => sum + rows, 0)).toBeLessThanOrEqual(1200) + // And the part left out is said, per file. + expect((await ui.findAll({ type: 'Text', text: /more rows/ })).length).toBeGreaterThan(0) + await ui.unmount() +}) + +test('a diff with no split form is cut at the engine limit and loses control characters', async ($, on) => { + const tree = engine(on, 1, 2) + tree.diff = noSplit(1, (side, i) => (i === 0 && side === '-' ? '-a\rb\tc' + 'x'.repeat(20_000) : '+short')) + on('clock.every', () => ({ value: undefined })) + await $.command.run(RUN) + + const ui = await $.ui.mount(PANE) + const code = (await ui.find({ type: 'Code' }))?.text ?? '' + expect(code).not.toContain('\r') + expect(code).not.toContain('\t') + expect(Math.max(...code.split('\n').map(line => line.length))).toBeLessThanOrEqual(10_000) + await ui.unmount() +}) + /** The pane is open: what `$.ui.panes` answers. */ const OPEN = [{ id: 'diffsplit' }] as unknown as readonly UiPane[] From 32e4efcc741d4e5e9be9b61990088df134b4bace Mon Sep 17 00:00:00 2001 From: oskarnrk Date: Fri, 23 Oct 2026 14:40:28 +0200 Subject: [PATCH 4/4] docs: add a screenshot of the /diffsplit pane Co-Authored-By: Claude Sonnet 5.5 --- README.md | 2 ++ docs/diffsplit-pane.png | Bin 0 -> 182269 bytes 2 files changed, 2 insertions(+) create mode 100644 docs/diffsplit-pane.png diff --git a/README.md b/README.md index cf1d39a..5e0c9bb 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,8 @@ directory against `HEAD`, untracked files included: - `r` reloads the changes - `Esc` closes the pane +![The /diffsplit pane: the list of the changed files with their counts, then each file open under its name, between two lines, with its diff in two columns](docs/diffsplit-pane.png) + Binary files are listed with `binary` and no diff. The pane reads the diff of the first 100 files and draws a limited number of rows (at most 500 per file and about 1200 in all); when a diff is cut it says `… N more rows`, and diff --git a/docs/diffsplit-pane.png b/docs/diffsplit-pane.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8af30cf6c60769bba0877eb38a307ffa26e611 GIT binary patch literal 182269 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Ξ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 z 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 DHiIWB literal 0 HcmV?d00001