-
#1129
0a67560- Bundlehunk ghfor reviewing GitHub pull requests, commits, and comparisons without a separate extension or the GitHub CLI, with exact-id controls through[extensions] disabled,--disable-extension, and--enable-extension. -
#1096
0a41a76-/now searches diff content from aless-style prompt on the status row andn/Nstep through matches with in-diff marks; the file filter stays on Tab and in the menu ("hunk.review.focusFilter" = "/"restores it), note stepping ships unbound, and extension API 27 addsctx.selection.files. -
#1099
392cb7f- Make a session daemon left over from a previous Hunk build visible and replaceable.A window the daemon refuses now shows a sticky status-bar notice naming which side is older and what to do: run
hunk daemon restartwhen the daemon is the older build, or relaunch the window when it is the newer one. A window whose registration the daemon rejects after the handshake gets its own notice instead of silently reconnecting.hunk sessioncommands fail with a structureddaemon-build-mismatcherror that says which side is older, counts the attached windows, and recommends an action; under--jsonit is returned in-band with the build details.New
hunk daemon statusreports the daemon's version, uptime, and attached windows, and newhunk daemon restartreplaces the daemon with one from the current build after confirming how many windows that disconnects. UnderHUNK_DEBUG=1the daemon logs which parser rejected a registration. -
#1053
ee556ac- Let file-view extensions declare complete code documents and map symbolic spans into them for host-owned, theme-aware syntax highlighting with bounded worker, cache, and plain-fallback behavior. -
#1095
515188e- The bottom status row is now a host-owned status line with real inline inputs for the file filter andhunk logsearch, and extension API 26 lets extensions set status items (ctx.statusLine) and ask for a line of text inline (ctx.prompts.line()). -
#1128
6c95708- Add aterminaltheme that follows the terminal's own foreground, background, and ANSI palette for diffs, chrome, and syntax highlighting, and make it the default theme. Hunk re-reads the terminal's colors and repaints when the terminal reports a color-scheme change or onSIGWINCH, so switching terminal themes restyles a running Hunk.
-
#853
dc17b5d- Let reviewers configure a fixed number of rows per mouse-wheel event for faster large-diff scrolling. -
#1095
515188e- Keep the focused file filter and its current text open across content reloads. -
#1099
392cb7f- npm installs now fall back to the bundled JavaScript runtime when the prebuilt binary cannot run on the machine, report signal exits as 128 + signal, and pick the native arm64 build under Rosetta. -
#1108
b72696a- Fixhunk patch(and other review flows) under the Nix flake package by installing thehunkdiffalias next tohunk, mirroring the npm package's dual binaries. Without it the review flow fails with "unable to execute '…/bin/hunkdiff'". -
#1095
515188e- Truncate long status prompt lead-ins so typed input stays visible beside the keyboard-mode badge on narrow terminals. -
#1079
33eb12f- Opening the help dialog or menu for the first time no longer waits ~300 ms. -
#1111
5e802c2- Large reviews no longer print aMaxListenersExceededWarningover the terminal UI when more than ten files are on screen. -
#1096
0a41a76- Preserve surrounding whitespace in content search queries when matching, repeating, and reopening the prompt. -
#1096
0a41a76- Highlight every non-overlapping search occurrence on a matching line while keeping only the first landed match current. -
#1116
a7ba8bc- Resolve bundled skills from the nearest matching directory, preferringhunkdiff/skills, thenskills, thennode_modules/hunkdiff/skillswithin that directory to avoid unrelated ancestor and nested-package copies. -
#1078
f86a04e- Reduce startup input stalls by loading syntax-highlighting WASM without synchronous base64 decoding. -
#1073
9b95a71- Pass the selected line to Zed (zedandzeditor) when opening a file withe, matching the existing Helix support.
-
#1044
2124066- Add visible keyboard selection for review notes. Line-by-line movement now stops on every comment and reply in rendered order; saving or clicking a note makes it active, with next/previous note navigation and persistent edit, reply, and delete shortcuts on the active note. -
#1012
a83da6d- Add session CLI support for replying to existing inline review notes with inherited code anchors. -
#931
d0bf162- Add persistent mouse and keyboard diff selections with explicit Comment, Copy, and Clear actions, including multiline review-note anchors. -
#986
7d27181- Let extension CLI commands attach validated provider-neutral review metadata when they delegate a patch into Hunk, expose it to extension panes and live-session snapshots, and show delegated change-request identity in a concise built-in top pane. -
#1039
93250a8- Add configurablehunk.history.*command keybindings to the interactive history view. -
#1009
e1001ae- Allow folders in the wide sidebar tree to be collapsed and expanded with the mouse while file navigation reveals destinations hidden inside collapsed folders. -
#1016
07c5892- Show history-style commit metadata in the review-info panel when opening a commit from interactivehunk log, with a copyable right-aligned revision and public pane clipboard/theme support. -
#1064
661534f- Show commit and comparison information, including short revision IDs, above direct CLI revision reviews for Git, Jujutsu, and Sapling. -
#1031
e3e4a6a- Add cancellable contiguous multi-commit selection to unfiltered interactive history with Shift+Arrow, J/K, and Shift-click controls, opening the inclusive cumulative change in one review. -
#1011
bf3c2a7- Redesign interactivehunk logwith themed GitHub-style day groups, account-like author handles, relative timestamps, and an optional commit graph view. -
#1038
9919017- Addvvisual range selection plus shared full-page and half-page movement keys to interactive history. -
#979
9219562- Add themed, static-first Git and Jujutsu history with compact output and an interactive browser that opens selected commits in Hunk. -
#988
622c0a3- Let extension lifecycle and custom-event handlers request a coalesced host review reload after external agents change reviewed files. -
#987
1598b0d- Openhunk logas an auto-responsive terminal browser with GitHub-inspired rows, right-aligned commit links and copy actions, while preserving static output for pipes and--static. -
#983
b4d4f6b- Add Hunk's desktop menu chrome, live theme picker, and provider-owned merge-parent selection to the interactive repository history browser. -
#941
f55894d- Animate docked panes as they open and close, moving the review pane alongside them. -
#945
a4e3d7a- Rename the single-column diff layout to unified, add canonical OpenTUI and extension API v23 fields, and retain deprecated stack compatibility across existing CLI, config, command, OpenTUI, and extension integrations.
-
#1075
0d68a61- Watch mode no longer freezes the review while checking Git for changes, and extension API generation 25 adds Promise-returning, cancellablewatchSignaturehooks. -
#1045
e2beb21- Keep diff view preferences active when moving between history and commit reviews in the same session. -
#990
f41a03d- Upgrade the bundled Bun runtime to 1.4.2 for lower memory use and runtime fixes. -
#1032
5ecc4dd- Show multi-commit history metadata as compact responsive rows with reusable click-to-copy revision actions, and let extension panes derive a preferred size from current review facts. -
#1050
4f95ca5- Prevent delayed editor updates from crashing a review after a note is saved. -
#1036
7947ca9- Cap pane animation rendering at 30 FPS to avoid unnecessary CPU usage, and add ananimations = falseconfig setting for immediate pane transitions. -
#1069
f5b8b24- Route curl-install release checks through globally refreshed metadata by default while retaining direct GitHub fallback and analytics opt-outs. -
#992
554cfc0- Keep commit reviews responsive while bundled VCS commands run, and share one correctly owned extension lifecycle across retained history and embedded reviews. -
#1043
f143e8e- Restore fast first-frame rendering for long wrapped split-view lines while preserving multiline copy selections and note range guides. -
#989
e884bca- Keep the themed history loading screen visible until a selected commit review is ready to claim the terminal. -
#1040
f9ef7ce- Keep theme changes active when moving between history and review surfaces in the same session. -
#969
0aa24d3- Add an opt-in, privacy-preserving cached endpoint for curl-install release checks, rate-limit automatic checks, and retain direct GitHub fallback and analytics opt-outs. -
#1054
c5bb30d- Restore automatic and manual reloads for direct-file comparisons launched outside repositories. -
#991
6d4440a- Makealtandoptionkeybindings work with both legacy terminal and Kitty keyboard encodings while preserving distinct Meta bindings when the terminal reports them. -
#992
554cfc0- Keephunk logand opened commit reviews in one terminal renderer so returning never exposes previous terminal output. -
#927
dee21c4- Report the underlying health-probe failure when a reachable session daemon port cannot be verified. -
#1015
cbf77de- Prompt to save theme changes when quitting an interactivehunk logsession, matching other review commands. -
#1046
923ce03- Stop drawing duplicate right-side range connectors on threaded reply cards. -
#1076
0a2d52f- Keep automatic refresh working on Linux after deleting and recreating nested directories. -
#1076
0a2d52f- Watch mode registers directory watchers in small batches so large repositories stay responsive during the first interaction on Linux. -
#1035
09f06a2- Shorten full Git commit IDs to seven characters in comparison titles so the title bar stays compact. -
#1068
795d835- Use1for unified diffs and2for split diffs by default. -
#1029
367dbbe- Print reviews as static plain text instead of launching the interactive TUI when stdout is not a terminal. -
#996
c6d15c0- Keep suspended Hunk jobs alive sofgrestores the TUI and its in-progress state. -
#1051
64c0abd- Keep wrapped diff rows responsive by sharing one hover target across their visual lines.
- #1064
661534f- Show commit and comparison information, including short revision IDs, above direct CLI revision reviews for Git, Jujutsu, and Sapling.
-
#1069
f5b8b24- Route curl-install release checks through globally refreshed metadata by default while retaining direct GitHub fallback and analytics opt-outs. -
#1068
795d835- Use1for unified diffs and2for split diffs by default.
-
#1044
2124066- Add visible keyboard selection for review notes. Line-by-line movement now stops on every comment and reply in rendered order; saving or clicking a note makes it active, with next/previous note navigation and persistent edit, reply, and delete shortcuts on the active note. -
#1012
a83da6d- Add session CLI support for replying to existing inline review notes with inherited code anchors. -
#931
d0bf162- Add persistent mouse and keyboard diff selections with explicit Comment, Copy, and Clear actions, including multiline review-note anchors. -
#986
7d27181- Let extension CLI commands attach validated provider-neutral review metadata when they delegate a patch into Hunk, expose it to extension panes and live-session snapshots, and show delegated change-request identity in a concise built-in top pane. -
#1039
93250a8- Add configurablehunk.history.*command keybindings to the interactive history view. -
#1009
e1001ae- Allow folders in the wide sidebar tree to be collapsed and expanded with the mouse while file navigation reveals destinations hidden inside collapsed folders. -
#1016
07c5892- Show history-style commit metadata in the review-info panel when opening a commit from interactivehunk log, with a copyable right-aligned revision and public pane clipboard/theme support. -
#1031
e3e4a6a- Add cancellable contiguous multi-commit selection to unfiltered interactive history with Shift+Arrow, J/K, and Shift-click controls, opening the inclusive cumulative change in one review. -
#1011
bf3c2a7- Redesign interactivehunk logwith themed GitHub-style day groups, account-like author handles, relative timestamps, and an optional commit graph view. -
#1038
9919017- Addvvisual range selection plus shared full-page and half-page movement keys to interactive history. -
#979
9219562- Add themed, static-first Git and Jujutsu history with compact output and an interactive browser that opens selected commits in Hunk. -
#988
622c0a3- Let extension lifecycle and custom-event handlers request a coalesced host review reload after external agents change reviewed files. -
#987
1598b0d- Openhunk logas an auto-responsive terminal browser with GitHub-inspired rows, right-aligned commit links and copy actions, while preserving static output for pipes and--static. -
#983
b4d4f6b- Add Hunk's desktop menu chrome, live theme picker, and provider-owned merge-parent selection to the interactive repository history browser. -
#941
f55894d- Animate docked panes as they open and close, moving the review pane alongside them. -
#945
a4e3d7a- Rename the single-column diff layout to unified, add canonical OpenTUI and extension API v23 fields, and retain deprecated stack compatibility across existing CLI, config, command, OpenTUI, and extension integrations.
-
#1045
e2beb21- Keep diff view preferences active when moving between history and commit reviews in the same session. -
#990
f41a03d- Upgrade the bundled Bun runtime to 1.4.2 for lower memory use and runtime fixes. -
#1032
5ecc4dd- Show multi-commit history metadata as compact responsive rows with reusable click-to-copy revision actions, and let extension panes derive a preferred size from current review facts. -
#1050
4f95ca5- Prevent delayed editor updates from crashing a review after a note is saved. -
#1036
7947ca9- Cap pane animation rendering at 30 FPS to avoid unnecessary CPU usage, and add ananimations = falseconfig setting for immediate pane transitions. -
#992
554cfc0- Keep commit reviews responsive while bundled VCS commands run, and share one correctly owned extension lifecycle across retained history and embedded reviews. -
#1043
f143e8e- Restore fast first-frame rendering for long wrapped split-view lines while preserving multiline copy selections and note range guides. -
#989
e884bca- Keep the themed history loading screen visible until a selected commit review is ready to claim the terminal. -
#1040
f9ef7ce- Keep theme changes active when moving between history and review surfaces in the same session. -
#969
0aa24d3- Add an opt-in, privacy-preserving cached endpoint for curl-install release checks, rate-limit automatic checks, and retain direct GitHub fallback and analytics opt-outs. -
#1054
c5bb30d- Restore automatic and manual reloads for direct-file comparisons launched outside repositories. -
#991
6d4440a- Makealtandoptionkeybindings work with both legacy terminal and Kitty keyboard encodings while preserving distinct Meta bindings when the terminal reports them. -
#992
554cfc0- Keephunk logand opened commit reviews in one terminal renderer so returning never exposes previous terminal output. -
#927
dee21c4- Report the underlying health-probe failure when a reachable session daemon port cannot be verified. -
#1015
cbf77de- Prompt to save theme changes when quitting an interactivehunk logsession, matching other review commands. -
#1046
923ce03- Stop drawing duplicate right-side range connectors on threaded reply cards. -
#1035
09f06a2- Shorten full Git commit IDs to seven characters in comparison titles so the title bar stays compact. -
#1029
367dbbe- Print reviews as static plain text instead of launching the interactive TUI when stdout is not a terminal. -
#996
c6d15c0- Keep suspended Hunk jobs alive sofgrestores the TUI and its in-progress state. -
#1051
64c0abd- Keep wrapped diff rows responsive by sharing one hover target across their visual lines.
-
#978
bfbfac8- Fixhunk pagerpegging a CPU core and growing to gigabytes of memory on large color-heavy input. Restoring preserved ANSI styling rescanned and reallocated the whole document once per sequence, so agit log --graph --color=alwaysstream from a host like LazyGit took minutes of solid CPU per process and never produced output. Styling is now restored in a single pass: a 3 MB branch log pages through in well under a second. -
#978
bfbfac8- Fixhunk pagertruncating its output at 64 KB when a host reads it through a pipe, which cut off large documents for Git's pager contract, LazyGit, and| less. Headless commands now hand the whole document to the stdout descriptor before exiting, so a piped consumer receives every byte.
-
#845
a572286- Navigate a live review directly to a comment returned byhunk session comment list. -
#865
4bb3f84- Make the vertical space between files and hunks configurable. -
#909
a78dac9- Add adimtone tohunk.registerLineHighlighterandhunk session highlight addfor fading diff text toward line backgrounds while preserving syntax highlighting token hues. -
#851
4d8b000- Let extensions select syntax highlighting by exact filename or basename/path glob, in addition to file extensions. -
#888
79fd010- Let extensions register generic top-level CLI command trees with raw arguments, cancellable streaming I/O, validated exit statuses, and one-time delegation into built-in Hunk commands, including a dependency-freehunk gh 123example that fetches GitHub pull-request diffs directly. -
#939
e1c292b- Publishhunk_viewedand store-backednote_changedextension lifecycle events so progress and note UIs can follow hunk navigation and agent comments. -
#940
2454101- Give opted-in extension panes the current line's{ side, line }source address oncurrentLine, matching command selection, so a pane can follow the cursor without waiting for a keypress. -
#917
cf226e0- Require Node.js 22 or newer for npm installs. Standalone Hunk binaries continue to run without Node.js. -
#924
15cdd7c- Resize the built-in files sidebar with the terminal, showing its compact projection at medium widths and keeping split review after the sidebar hides. Extension API v12 addsExtensionPaneSize.fractionfor bounded body-axis fractional sizing while preserving manual overrides. -
#933
8d17357- Authenticate local session producers and CLI controls with automatically discovered owner-private credentials, signed responses, scoped reconnect replacement, and bounded handshakes. Expose only minimal public daemon health, refuse unsafe PID-based replacement, and let interactive Hunk windows reconnect automatically after an incompatible incumbent becomes idle. -
#925
f401472- Add editable inline review notes and arbitrarily nested threaded replies with mouse and keyboard actions, including reviewer dismissal of reply-free live agent notes. -
#965
034796a- Add a pane-wideonActivatecallback to the extension API for primary mouse presses. -
#938
598e084- Support backend-nativehunk diff <from> <to>reviews across Git, Jujutsu, and Sapling, with pinned source expansion, working-copy isolation, explicithunk diff --files <left> <right>file comparison, and structuredrangeEndpointsin extension API generation 14. -
#921
7f7d84c- Show a fully expanded file tree when the file sidebar reaches its preferred 34-column width, and keep resize drags active while its layout changes.
-
#890
5012b2f- Enable unchanged-context expansion in Jujutsu-backed reviews. -
#968
566220b- Add a/compare/section to hunk.dev with head-to-head pages for delta, difftastic, diff-so-fancy,git diff, and Plannotator, each also served as Markdown for coding agents. -
#774
bf629ce- Provide complete key event data to command matchers and programmatically invoked handlers. -
#855
c6ebba9- Add Ctrl-D and Ctrl-U aliases for half-page review scrolling. -
#955
9b5d419- Fence late session lifecycle commits so stopped or replaced generations cannot authenticate, reconnect, publish daemon launch metadata, or mutate broker client state. -
#928
a7c8508- Keep explicit top and bottom jumps from being overridden by a pending selection reveal. -
#908
708fd3a- Stop installing Bun beside prebuilt Hunk packages so pnpm global updates cannot corrupt Bun's shared platform-package projection. Standalone platform binaries continue to work without a separate Bun installation. -
#922
dfa9aa4- Fill the review stream on first paint instead of leaving it blank until the user scrolls. -
#956
be35bb5- Contain unexpected session broker lifecycle failures behind one fixed, redacted user-visible message. -
#954
39217ae- Let focused editors inside extension panes receive keys before Hunk's global shortcuts. -
#919
6df80a9- Make the checksum-aware curl installer the default across the website and docs, add an accessible tabbed install selector, and establishhunk updateas the canonical updater from Hunk 0.20 onward. -
#950
d4b1286- Retry session broker connections after synchronous WebSocket startup failures. -
#936
ad0baaa- Keep iTerm2 sessions connected to the local session daemon when their terminal identifiers contain native punctuation. -
#858
97a44be- Keep wrapped diff geometry aligned with rendered note-guide and add-note columns. -
#937
6e39a34- Accept the documenteddimtone when routing line-highlight commands through the session daemon. -
#850
65d1c20- Recognize pacman/AUR-managed installations viaHUNK_INSTALL_SOURCE=pacmanand suppress automatic update notices for them. -
#914
8992abd- Upgrade the OpenTUI runtime and reusable component peer requirement to 0.5.6. -
#961
1e97cf4- Publish dated prerelease notes on hunk.dev without promoting them as the latest stable release or default install target. -
#960
e9726c4- Refuse curl installs alongside competing Hunk binaries unless explicitly forced, and print each conflicting path, version, PATH precedence, and package-manager removal guidance. -
#724
76565a6- Exit cleanly when the terminal hosting a review disconnects instead of leaving an unreachable Hunk process behind. -
#942
42d2b9d- Restore first-frame and scroll responsiveness for large review streams. -
#828
f0fc408- Fix washed-out or wrong-hue diff colors in ~25 bundled themes (gruvbox, rosé pine, tokyo-night, material, everforest, laserwave, night-owl, slack, and others) by re-harvesting every theme's diff accents from its real VS Code accent tokens. -
#825
b2fc6fc- Stop the theme contrast guards from washing out diff accents: low-contrast sign colors now get the smallest readable adjustment instead of a fixed 45% blend, and word-level diff emphasis is derived to the renderer's own separation floor so the highlight you see is the one the theme defines. -
#902
034ec9e- Refuse to start watch mode under Bun versions older than 1.3.14, which can deadlock filesystem watcher cleanup and leave Hunk unresponsive.
-
#955
9b5d419- Fence late session lifecycle commits so stopped or replaced generations cannot authenticate, reconnect, publish daemon launch metadata, or mutate broker client state. -
#956
be35bb5- Contain unexpected session broker lifecycle failures behind one fixed, redacted user-visible message. -
#954
39217ae- Let focused editors inside extension panes receive keys before Hunk's global shortcuts. -
#950
d4b1286- Retry session broker connections after synchronous WebSocket startup failures. -
#961
1e97cf4- Publish dated prerelease notes on hunk.dev without promoting them as the latest stable release or default install target. -
#960
e9726c4- Refuse curl installs alongside competing Hunk binaries unless explicitly forced, and print each conflicting path, version, PATH precedence, and package-manager removal guidance.
-
#845
a572286- Navigate a live review directly to a comment returned byhunk session comment list. -
#865
4bb3f84- Make the vertical space between files and hunks configurable. -
#909
a78dac9- Add adimtone tohunk.registerLineHighlighterandhunk session highlight addfor fading diff text toward line backgrounds while preserving syntax highlighting token hues. -
#851
4d8b000- Let extensions select syntax highlighting by exact filename or basename/path glob, in addition to file extensions. -
#888
79fd010- Let extensions register generic top-level CLI command trees with raw arguments, cancellable streaming I/O, validated exit statuses, and one-time delegation into built-in Hunk commands, including a dependency-freehunk gh 123example that fetches GitHub pull-request diffs directly. -
#939
e1c292b- Publishhunk_viewedand store-backednote_changedextension lifecycle events so progress and note UIs can follow hunk navigation and agent comments. -
#940
2454101- Give opted-in extension panes the current line's{ side, line }source address oncurrentLine, matching command selection, so a pane can follow the cursor without waiting for a keypress. -
#917
cf226e0- Require Node.js 22 or newer for npm installs. Standalone Hunk binaries continue to run without Node.js. -
#924
15cdd7c- Resize the built-in files sidebar with the terminal, showing its compact projection at medium widths and keeping split review after the sidebar hides. Extension API v12 addsExtensionPaneSize.fractionfor bounded body-axis fractional sizing while preserving manual overrides. -
#933
8d17357- Authenticate local session producers and CLI controls with automatically discovered owner-private credentials, signed responses, scoped reconnect replacement, and bounded handshakes. Expose only minimal public daemon health, refuse unsafe PID-based replacement, and let interactive Hunk windows reconnect automatically after an incompatible incumbent becomes idle. -
#925
f401472- Add editable inline review notes and arbitrarily nested threaded replies with mouse and keyboard actions, including reviewer dismissal of reply-free live agent notes. -
#938
598e084- Support backend-nativehunk diff <from> <to>reviews across Git, Jujutsu, and Sapling, with pinned source expansion, working-copy isolation, explicithunk diff --files <left> <right>file comparison, and structuredrangeEndpointsin extension API generation 14. -
#921
7f7d84c- Show a fully expanded file tree when the file sidebar reaches its preferred 34-column width, and keep resize drags active while its layout changes.
-
#890
5012b2f- Enable unchanged-context expansion in Jujutsu-backed reviews. -
#774
bf629ce- Provide complete key event data to command matchers and programmatically invoked handlers. -
#855
c6ebba9- Add Ctrl-D and Ctrl-U aliases for half-page review scrolling. -
#928
a7c8508- Keep explicit top and bottom jumps from being overridden by a pending selection reveal. -
#908
708fd3a- Stop installing Bun beside prebuilt Hunk packages so pnpm global updates cannot corrupt Bun's shared platform-package projection. Standalone platform binaries continue to work without a separate Bun installation. -
#922
dfa9aa4- Fill the review stream on first paint instead of leaving it blank until the user scrolls. -
#919
6df80a9- Make the checksum-aware curl installer the default across the website and docs, add an accessible tabbed install selector, and establishhunk updateas the canonical updater from Hunk 0.20 onward. -
#936
ad0baaa- Keep iTerm2 sessions connected to the local session daemon when their terminal identifiers contain native punctuation. -
#858
97a44be- Keep wrapped diff geometry aligned with rendered note-guide and add-note columns. -
#937
6e39a34- Accept the documenteddimtone when routing line-highlight commands through the session daemon. -
#850
65d1c20- Recognize pacman/AUR-managed installations viaHUNK_INSTALL_SOURCE=pacmanand suppress automatic update notices for them. -
#914
8992abd- Upgrade the OpenTUI runtime and reusable component peer requirement to 0.5.6. -
#724
76565a6- Exit cleanly when the terminal hosting a review disconnects instead of leaving an unreachable Hunk process behind. -
#942
42d2b9d- Restore first-frame and scroll responsiveness for large review streams. -
#828
f0fc408- Fix washed-out or wrong-hue diff colors in ~25 bundled themes (gruvbox, rosé pine, tokyo-night, material, everforest, laserwave, night-owl, slack, and others) by re-harvesting every theme's diff accents from its real VS Code accent tokens. -
#825
b2fc6fc- Stop the theme contrast guards from washing out diff accents: low-contrast sign colors now get the smallest readable adjustment instead of a fixed 45% blend, and word-level diff emphasis is derived to the renderer's own separation floor so the highlight you see is the one the theme defines. -
#902
034ec9e- Refuse to start watch mode under Bun versions older than 1.3.14, which can deadlock filesystem watcher cleanup and leave Hunk unresponsive.
-
29f18c8- Prevent syntax-highlight cache collisions from displaying stale code after review reloads. -
e76dbcc- Keep the theme selector responsive and its highlighted row visible during rapid keyboard navigation. -
3fb3e15- Reject session reload inputs whose VCSrangeorrefvalues look like command options. A caller reaching the session broker could otherwise injectgitflags such as--output=<path>through a/session-apireload request and make Hunk write diff output to an arbitrary path.
-
#799
61ca92d- Add a curl installer (curl -fsSL https://hunk.dev/install.sh | sh) with checksum verification, and teachhunk updateto update curl installs. -
#779
bf28a59- Let extension commands inspectctx.selection.currentLine; TypeScript authors constructingExtensionReviewSelectionmust add its required field. -
#833
1210c08- Let extension commands capture immutable snapshots of stable review files and every saved review note. -
#788
7d25fbf- Addhunk updateto self-update Hunk with the package manager that installed it (npm or Homebrew), with guidance for Nix, mise, and source installs.
-
#809
8a2e0d8- Keep the active code line fixed in place while an inline comment form pushes following content down. -
#784
4aea1e1- Keephunk --version,--help,daemon serve, andhunk session *off the diff-engine startup path again, and release the syntax worker when the review app exits instead of at startup. -
#810
0436ba1- Make--fastoffload eligible syntax highlighting for files with 40 or more lines. -
#840
bff4fbe- Let mouse clicks reliably select exact code lines, including blank lines, for keyboard review actions. -
#786
52543ea- Fail clearly when an OpenTUI upgrade removes the shifted-wheel scroll reset Hunk requires. -
#803
dc66723- Reduce hunk navigation latency by avoiding unnecessary diff, sidebar, and syntax-highlighting work. -
#791
6c8cacf- Reuse worker-highlighted diffs after the terminal cache evicts them.
-
5cb62af- Stop installing Pierre dependencies for CLI-only npm users. -
3e58eff- Restore executable permissions for platform binaries installed through npm. -
da696b1- Accelerate complex Unicode text width measurement in reviews. -
87b654c- Git'scolor.movedhighlights are no longer lost whenwrap_linesis on. -
62441cf- Build the x64 binaries for CPUs without AVX2, so Hunk no longer dies with an illegal instruction on pre-Haswell machines and conservative VM CPU models.
Hunk 0.19.0 expands the extension platform, makes live agent guidance more precise, and keeps large reviews responsive.
- Install and build richer extensions. Install shared extensions from Git, dock panes on every edge, add session-scoped keyboard modes and guided workflows, and use the bundled authoring skill to discover the public API.
- Point agents and reviewers at exact code. Live sessions and extensions can highlight character ranges and navigate directly to a source line, while
$EDITORopens at the line currently under review. - Stay responsive in large repositories. Untracked-file diffs avoid per-file subprocesses, syntax caches follow the active review, generated files skip expensive highlighting, and experimental
--fasthighlighting can offload eligible large diffs to a worker. - Control the workspace more precisely. Configure sidebar visibility, keep files and extension panes independent, and use review keybindings consistently in selectors and extension modes.
- Verify and install releases confidently. Release archives carry build provenance attestations, and mise installation is documented across macOS, Linux, and Windows.
-
#728
bb6405e- Agents can now light up exact character ranges in a live review withhunk session highlight add/clear(five contrast-guaranteed tones, painted through the same pipeline as extension line highlights), andhunk session navigateline targets now land the viewport on the exact line instead of just its hunk. -
#697
cb91c4b- Ship an extension-authoring skill for coding agents and lethunk skill path [name]print any bundled skill. -
#713
ee97fef- Open$EDITORat the current line instead of the start of the selected hunk. -
#710
cd0df72- Generalize extension sidebars into dockable panes on all four review edges. -
#717
fe9373b- Add extension APIs for transient sessions and observing or navigating guided review workflows. -
#712
994f66d- Install shared extensions straight from git withhunk extension install <owner>/<repo>[@ref](pluslist,update, andremove), let extension manifests declare a minimum API version via"hunk": {"apiVersion": N}, and find community extensions under thehunk-extensionGitHub topic. -
#726
9bdb0bb- Extensions can mark character ranges inside diff lines withhunk.registerLineHighlighter(API v5): source-addressed, tone-based marks painted inside Hunk's own rendering with guaranteed contrast on every line kind, invalidated throughctx.highlights.refresh. -
#749
76e5eb2- Hunk now runs on OpenTUI 0.5, picking up its faster FFI layout reads and a fix for duplicate live frame timers. Embedders ofhunkdiff/opentuineed to move their@opentui/coreand@opentui/reactpeer installs to^0.5.1. -
#706
51df868- Let extensions invoke public Hunk review commands with atomic movement counts. -
f1bc9bf- Let every configured vertical review key move open selection dialogs, including the theme selector. -
#727
b941e0f- Extensions can jump the review to one exact source line withctx.navigation.revealLine(fileId, side, line)(API v5), so a target deep inside a tall hunk lands near the top of the viewport instead of pages below its anchor. -
#708
61cc6b1- Let extensions activate visible session-scoped keyboard modes that route keys through Hunk's public semantic commands. -
#648
c16206f- Add configuration and CLI flags to control the sidebar in non-pager mode. -
#711
e31f7ad- Decouple bundled VCS providers from core, add provider-neutral repository bootstrapping, and let extension source readers report files that exceed their safe read limit.
-
#714
bf981ee- Publish GitHub build provenance attestations for the release archives so installs can be cryptographically verified. -
#743
f5314d6- Make the theme picker scroll independently, preview themes after a brief hover, and apply them on click. -
#695
63babe0- Fix malformed@@hunk headers so each side's line range and count are emitted correctly. -
#750
781074d- Start up faster for commands that never build a changeset.hunk --version,--help,daemon serve, the markup commands, andhunk session *no longer load the VCS, extension, and diff-engine graph before answering. -
#714
bf981ee- Document installing Hunk with mise, and note that Hunk ships as a default Omarchy tool. -
#682
cbd77c4- Wrap draft review notes by terminal cells instead of scrolling horizontally, so long CJK notes stay fully visible while typing; previously the composer stayed one row high and hid everything before the cursor. -
#740
772212d- Agent notes anchored to collapsed or expanded-away lines now render beside their owning hunk instead of the top of the file. -
#754
859bdac- Budget the syntax highlighting cache by lines instead of file count, so reviews of many small files stop re-highlighting as you scroll and reviews of very large files stay within a bounded memory footprint. -
#757
6d8752a- Toggle the files pane without hiding independently controlled extension panes. -
#733
ef5798e- Fix extension line highlights: marks now paint per file as they resolve instead of waiting for every file, never paint a previous review's offsets onto a reloaded file, stay visible on transparent line backgrounds, keep every active file's result retained however large the review is, and paint a row carrying thousands of ranges in milliseconds instead of seconds. Marks still resolve their tint against an assumed background on transparent cells, and a range covering only zero-width characters paints nothing. -
#754
859bdac- Keep syntax highlighting cached for the files you are actually reviewing, so scrolling back to a recent file no longer re-highlights it. -
#693
505d9d3- Keep the top menu bar inside the same one-column margin as the rest of the app instead of painting its background into the outer gutter. -
#759
5ebe975- Add an experimentalhunk --fastmode that keeps eligible large syntax-highlighted diffs responsive with a Bun worker. -
#714
bf981ee- Recognize mise-managed installs and skip the startup update notice for them, since mise already keeps Hunk up to date. -
#777
bdec620- Document thatmise use -g hunknow installs Hunk on Windows with mise 2026.8.6 or newer. -
#753
cfe8eee- Improved diff alignment when a change block adds and removes different numbers of lines: the changed line now pairs with the line it actually resembles instead of whichever line happened to sit in the same position, so split view lines up correctly and the word-level highlight marks just the edited part instead of most of an unrelated line. -
#703
5afddf1- Keep Git's colors in non-diffhunk pageroutput for captured pager hosts, so LazyGit's branch log renders in its normal per-branch palette instead of a single color. -
#754
859bdac- Render diffs larger than 10,000 lines as plain rows instead of syntax highlighting them, so a regenerated lockfile appears immediately and stops delaying color on the files around it. -
#738
58c7d48- Fixhunk difftaking tens of seconds in repos with many untracked files by synthesizing untracked diffs in-process instead of spawning onegit diff --no-indexsubprocess per file. -
#760
e5116b3- Name the public files-pane commandhunk.view.toggleFilesPane, preservehunk.view.toggleSidebaras a compatibility alias, and requirehunk:fileswhen directly controlling the built-in pane.
- #742
568e7a5- Fixhunk difftaking tens of seconds in repos with many untracked files by synthesizing untracked diffs in-process instead of spawning onegit diff --no-indexsubprocess per file.
-
f0c2d88- Fix malformed@@hunk headers so each side's line range and count are emitted correctly. -
85f441b- Keep the top menu bar inside the same one-column margin as the rest of the app instead of painting its background into the outer gutter. -
a890077- Keep Git's colors in non-diffhunk pageroutput for captured pager hosts, so LazyGit's branch log renders in its normal per-branch palette instead of a single color.
Hunk 0.18.0 makes reviews more precise, customizable, and extensible—while improving performance and reliability across large repositories and diverse terminals.
- A full extension platform. Install TypeScript extensions that add VCS backends, commands, sidebars, dialogs, interactive file views, themes, and workspace actions.
- Line-level review and commenting. A visible cursor moves with
j/k, andcadds a comment exactly where you are looking—even across large reviews and wrapped lines. - Richer agent context. Experimental STML notes can present structured, terminal-native explanations with preview tools and layout-aware feedback.
- Full reviews from pipelines. Piped diffs now retain Hunk’s navigation, filtering, layouts, sidebars, and other review controls.
- A UI that follows your preferences. Remappable shortcuts appear correctly in menus and help, view settings can be saved on quit, and tabs and syntax colors are configurable.
- Faster and more dependable reviews. Watch mode uses less CPU, navigation retains less memory, Unicode filenames render correctly, narrow terminals stay readable, and saved state and session behavior are more resilient.
-
#570
94d61e1- Let custom themes override exact Shiki/TextMate syntax scopes while keeping deprecated syntax-role colors compatible. -
#629
e65e84a- Let extension commands navigate directly to visible files and hunks. -
#616
fe21ef9- Give extension commands a snapshot of the file and hunk the user is reviewing. -
#588
928f607- Render tabs at four-column stops by default, with CLI and config overrides. -
#632
86bf722- Add experimental React/OpenTUI component rows to extension file views without giving up Hunk's review navigation and notes. -
#662
5150d21- Add a visible current-line cursor soj/kmove line by line andccomments exactly where the cursor sits. -
#617
548f56d- Let extension commands open Hunk-native confirmation, selection, and text-input dialogs. -
#619
926324d- Add extension UI lifecycle events, sidebar controls, and inter-extension events. -
#599
883fad7- Add experimental TypeScript extensions for custom themes, VCS backends, changeset transforms, lifecycle hooks, config, and notifications. -
#675
efa2203- Let interactive extension file views handle keys until Escape returns control to Hunk. -
#673
378ec4b- Let stateful extension file views refresh their rendered layouts in place. -
#615
1501eb6- Expose resolved user keybindings to extension sidebars so their controls honor remapping and unbinding. -
#512
8a8dbc7- Add experimental rich STML agent notes with preview commands and live width feedback. -
#614
fa0500d- Make menus and help reflect actual keybindings, and add an Extensions menu for contributed commands. -
#611
449b328- Let extensions add commands and multiple sidebars, with configurable keybindings and safe conflict handling. -
#647
aa1c24a- Give piped pager reviews the same navigation, filtering, layout, and sidebar controls as regular reviews. -
#626
b6737d8- Expose stable hunk summaries to extension events, sidebars, commands, and file views. -
#632
86bf722- Add an experimental extension file-view API and an optional rendered Markdown example. -
#468
e098b3a- Offer to save changed themes and view preferences when quitting. -
#609
46ef38a- Let extensions replace file navigation with custom React sidebars while safely falling back to Hunk's sidebar on errors. -
#674
4a656c7- Let extension commands read reviewed files and write them back with user confirmation.
-
#531
2458366- Reduce Git polling and CPU use in watch mode while preserving reliable refreshes. -
#599
883fad7- Make repo-extension trust persist across symlinked and alternate path spellings. -
#684
0886985- Show the changed-file count beside addition and deletion totals. -
#669
ab570a0- Preserve syntax highlighting when visible hunks begin inside folded multiline constructs. -
#675
efa2203- Make remappedctrl+lettershortcuts work when terminals send bare control characters. -
#625
8396284- Discover.tsxand.jsxextension entries and clarify extension authoring guidance. -
#606
a9910f1- Let folder extensions declare multiple entry points and dependencies inpackage.json. -
#685
61a561a- Keep current-line navigation responsive and memory-efficient in large reviews and long wrapped rows. -
#599
883fad7- Make extensions safer and more reliable across loading, reloads, themes, lifecycle handlers, and custom VCS detection. -
#606
a9910f1- Load a directory passed as an extension from itsindexentry instead of treating every file as a separate extension. -
#668
5230cc5- Keep file statistics visible and paths readable on narrow terminals. -
#649
815f343- Prevent one keypress from triggering both a modal action and the focused review control. -
#589
6ccc3a6- Require--experimentalbefore rendering rich STML agent notes. -
#519
dcf66e8- Label repository-root files with./in the sidebar. -
#531
2458366- Reduce watch-mode startup time on macOS and Windows with native recursive observation. -
#670
45af37c- Display tracked CJK and emoji filenames correctly throughout reviews and session APIs. -
#574
53fcb2c- Warn when deprecated custom syntax colors are translated to approximate Shiki scopes. -
#572
d3d90d8- Restart stale session daemons after upgrades so live comments keep working. -
#627
afc2b89- Resolve a shell-quote denial-of-service vulnerability and keep direct-file watch refreshes responsive. -
#630
076ac6f- Document the supported scrolling and selection-following contract for custom extension sidebars. -
#596
31fc677- Generate the bundled review skill from the CLI surface so commands, errors, and flags stay accurate. -
#652
89052f5- Avoid preparing inactive custom file views, reducing work and retained memory in normal diff reviews. -
#655
c2ad4dc- Keep file navigation focused on the file it just selected, even on loaded machines. -
#645
8e1f5fd- Keep one-line scrolling consistent after clicking inside the review stream. -
#599
883fad7- Write saved state atomically and preserve corrupt state files for recovery. -
#573
1887d46- Improve STML guidance for composing rich content inside Hunk's native note frame. -
#598
cbf652e- Show Nix-specific update instructions for Nix installations.
-
#570 - Add exact Shiki/TextMate overrides via
custom_theme.syntax_scopes, with compatibility for deprecatedcustom_theme.syntax. -
#629 - Add live
ctx.navigation.selectFileandselectHunkAPIs for guarded review-stream navigation. -
#616 - Give extension commands a frozen snapshot of the current review selection through
ctx.selection. -
#588 - Render tabs at four-column stops by default, configurable through
tab_width,-x, or--tab-width. -
#632 - Advance the extension API to v2 with experimental fixed-height React/OpenTUI file-view rows and semantic theme painting.
-
#617 - Add queued
ctx.dialogs.confirm,select, andinputprompts to extension commands. -
#619 - Add extension UI lifecycle events, sidebar controls for event handlers, and an inter-extension event bus.
-
#599 - Add experimental TypeScript extensions, bundled VCS adapters, multiple custom themes, trust controls, and configurable loading paths.
-
#615 - Expose resolved command keybindings to custom extension sidebars so they honor remapping and unbinding.
-
#512 - Add experimental STML agent-note markup,
hunk markup guide/render, and live note-width validation APIs. -
#614 - Make menus and help reflect remapped keys, add an Extensions menu, and expose formerly menu-only actions as commands.
-
#611 - Add extension commands, multiple sidebar views, configurable
[keybindings], shared key APIs, and namespaced command/view IDs. -
#647 - Give
hunk pagerthe full review controls while keeping its menu bar and sidebar initially hidden. -
#626 - Expose ordered
ExtensionDiffHunksummaries with headers, indexes, and inclusive line spans in public file views. -
#632 - Add an experimental host-rendered extension file-view contract and an optional Markdown preview example.
-
#468 - Offer to save changed view preferences on quit, with a persistent “never ask” option.
-
#609 - Let extensions replace file navigation with React sidebars that receive live review props and safe navigation actions.
-
#531 - Reduce Git polling and CPU use in watch mode while preserving continuous refreshes with a polling fallback.
-
#599 - Store repo-extension trust by canonical root so trusted extensions load through symlinked and Windows short paths.
-
#625 - Discover
.tsxand.jsxextension entries alongside TypeScript and JavaScript entries. -
#606 - Support folder-extension entry points and multiple entries through
package.jsonhunk.extensionsmanifests. -
#599 - Harden extension types, themes, lifecycle data, reloads, VCS detection, configured paths, and user-facing failures.
-
#606 - Load directories with
index.ts,index.js, orindex.mjsas single folder extensions. -
#649 - Prevent one keypress from triggering both a modal action and the focused widget beneath it.
-
#589 - Require
--experimentalfor STML note rendering and advertise thestmlcapability only in opted-in sessions. -
#519 - Label repo-root file runs with a
./sidebar header without changing review order. -
#531 - Reduce watch-mode startup cost on macOS and Windows with bounded native recursive filesystem observation.
-
#574 - Show a startup notice when deprecated
custom_theme.syntaxcolors are translated to approximate Shiki scopes. -
#572 - Restart stale session daemons during upgrades so rich STML comments reach live reviews.
-
#627 - Upgrade
shell-quoteagainst a denial-of-service flaw and keep file-watch refreshes responsive after missed events. -
#630 - Document the supported scrollbox ref, stable row IDs, selection following, and pane geometry APIs for custom sidebars.
-
#596 - Generate the hunk-review skill from typed session commands and document missing note, markup, rationale, and author flags.
-
#652 - Skip inactive custom file-view preparation to reduce rerenders and retained memory in raw-diff reviews.
-
#655 - Keep delayed scroll alignment from changing the file selected by navigation.
-
#645 - Preserve one-line keyboard scrolling after clicking in the review stream.
-
#599 - Write
state.jsonatomically and preserve unreadable state asstate.json.corrupt. -
#573 - Teach STML authors to compose within Hunk’s native note frame while preserving focused inset boxes.
-
#598 - Show Nix-aware update guidance instead of suggesting npm installation for the Nix package.
- f7eff9d: Fix session commands when the local daemon uses the IPv6 loopback address.
- dc61750: Fix Nix flake evaluation on Nixpkgs 26.11, which dropped
x86_64-darwin. Hunk's flake no longer declares that system, and it now pins bun2nix'ssystemsinput to the same list so building theaarch64-darwinpackage never forces an Intel macOS Nixpkgs. The system list is exposed as asystemsflake input for consumers that need to override it.
- 736b1d7: Republish the 0.17.5 application changes as 0.17.6 so the GitHub release includes downloadable binaries for every supported platform. Application behavior is unchanged from 0.17.5.
- 034ec93: Avoid loading OpenTUI's embedded native library for headless commands. Help, version, session polling, daemon serving, markup rendering, and non-interactive pager paths now stay behind a lightweight CLI entrypoint, preventing Bun from leaking a native temp file for commands that never open the review UI.
- aa123df: Optimize terminal cell width measurement so diffs with CJK, emoji, and chrome-glyph runs render faster: single-scalar clusters now measure through a fast zero-width check plus the East Asian Width table instead of string-width's expensive emoji regexes, while multi-scalar clusters still defer to string-width for identical results.
- a9b8694: Restore OpenTUI's platform-default renderer threading to improve interactive startup on macOS.
- 67674fa: Rapidly pressing Ctrl+S (or double-clicking Save) while saving a draft note no longer saves the same note twice, and saved note ids stay unique even within one millisecond.
- 9d1c346: Extend static pager diff-row backgrounds to the edge of host panels such as Lazygit.
- 05d6c17: Wrap plain-text agent notes by terminal cells instead of UTF-16 code units, so CJK and emoji text wraps correctly instead of being truncated with silent content loss. Long unbroken words split on grapheme boundaries, so wide characters and surrogate pairs are never cut apart.
- 7e934a0: Reject malformed and unsafe line and hunk numbers instead of accepting their numeric prefix.
- d1d36fc: Fix mouse-selection copy misalignment on lines with wide (CJK, emoji) characters: drag, double-click, and triple-click selections now convert terminal cell columns into string indices before slicing, so the copied text matches the selected cells exactly. File-header rows with wide-character filenames now copy with the same cell alignment, and invisible zero-width characters at a selection boundary round-trip through the clipboard.
- cb8d626: Prevent Windows crashes when scrolling to the end of a diff and suppress Yoga NaN warning spam in Apple Silicon npm installs by upgrading OpenTUI to 0.4.3.
- 45f6402: Reduced retained memory for large reviews by lazily materializing cached geometry row plans only when copy selection needs them.
- 7ae443d: Fix global config discovery on Windows when
HOMEis unavailable.
- 6cd39c9: Add a configurable menu bar toggle so keyboard-driven reviews can reclaim one row of terminal space.
- 8945272: Add an
enableClaudeIntegrationhome-manager option that links the packagedhunk-reviewskill into~/.claude/skills, so Nix users get the Claude Code review skill without manual setup. - d2be4e7: Add an
enableJujutsuIntegrationhome-manager option that sets hunk as the jujutsu pager and switchesui.diff-formatterto:gitso jj emits diffs hunk can render.
- 0a3cc06: Add an Agent menu dialog that shows and copies the Hunk review skill setup prompt.
- d7f1558: Upgrade OpenTUI to 0.4.2 and Bun to 1.3.14 for renderer, input, and platform fixes.
- 675104f: Fix a transient bottom-edge scroll clamp: mounted diff sections now always render their agent-note rows, so the review stream's painted height matches its measured layout height and over-scrolling at the bottom can no longer snap short by the height of an offscreen note.
- 65a2740: Highlight
.mtsand.ctsfiles as TypeScript instead of plain text. - ed8268a: Stop treating Escape as a global quit shortcut; use
qto quit while preserving Escape for dialogs and focused controls. - 290ebcd: Keep live review sessions from being pruned after the machine wakes from sleep.
- ae57101: Avoid transient mixed-color frames when previewing or accepting themes from the theme selector.
- 916cd8a: Preserve added and removed diff row tints when transparent background mode is enabled in the interactive TUI.
- d4b829f: Fix session daemon auto-launch on Windows: the compiled binary's virtual
B:\~BUN\...entrypoint was mistaken for a script path and passed to the relaunched daemon as a bogus argument, sohunk sessioncommands never found a live session.
- 8ffe0ba: Refresh Hunk's built-in theme system, default to
github-dark-default, and simplify theme selection around onethemesetting withView -> Themes…/topening the selector. Custom themes can inherit from any built-in theme withcustom_theme.basewhile keeping explicit syntax color overrides, and removed theme ids such asgraphiteandpaperremain accepted as compatibility aliases.
- 4bef148: Allow session comment cleanup commands to remove human
cnotes:comment rmacceptsuser:*note ids, andcomment clear --include-user/--allclears user notes alongside live agent comments. - 48b97ac: Adopt Changesets for release-note fragments so pull requests can avoid conflicting
CHANGELOG.mdedits. - c0cf637: Prevent standalone Hunk binaries from loading
bunfig.tomlfiles from the caller's working directory. - c28c266: Improve React review-stream responsiveness by reducing offscreen file mounting work while preserving adjacent highlight prefetching.
- 3906f39: Honor explicit split layout mode in static pager output for captured hosts like LazyGit.
- 8ffe0ba: Improve generated theme contrast checks for built-in themes, including diff rows, metadata, chrome, and fallback token colors.
- 59fcdbb: Require an explicit click or keyboard action before previewing a theme from the theme selector, while keeping mouse-wheel navigation available inside the selector.
0.15.3 - 2026-06-13
- Added release benchmark snapshots and a release workflow gate that blocks publishing when committed benchmark results show material performance regressions, with auditable accepted-regression records for intentional release tradeoffs.
- Fixed Windows launches from Cygwin, Git Bash, and WSL-style VCS paths by normalizing Unix-style repo roots before reusing them as subprocess working directories or filesystem roots.
- Fixed release staging so benchmark comparison artifacts are not mistaken for platform binary artifacts.
- Reduced hunk-navigation latency and memory growth on large reviews by keeping diff geometry memoized when the selected hunk changes.
- Reduced scroll and hunk-navigation latency on large reviews by avoiding repeated separator measurement and preserving memoized offscreen/visible diff rows across viewport updates.
- Reduced main diff pane rendering work on large reviews by virtualizing offscreen file sections behind exact-height spacers.
- Reduced sidebar rendering work on many-file reviews by virtualizing offscreen file rows behind exact-height spacers.
0.15.2 - 2026-06-13
- Coalesced scroll-position React updates into a single per-frame read and shifted background syntax highlighting from microtasks to timers, so rapid wheel or held-arrow scrolling no longer produces visible jank from per-delta state updates or per-file highlight work starving input and render callbacks.
- Honored
--transparent-bgandtransparent_backgroundin static pager output, so captured pager hosts like LazyGit let translucent terminal backgrounds through on context lines, gutters, and hunk headers while added/removed rows keep their tinted backgrounds. - Kept menu dropdowns and the help dialog on the base theme in transparent-background mode so popups remain readable over translucent terminals.
- Resolved
hunk session ... --repo <path>selectors to the containing repo root before matching, so--repo .(and any path inside the tree) targets the live session from a subdirectory instead of reporting no match.
0.15.1 - 2026-06-09
- Restored the
ekeyboard shortcut and menu hint for opening the selected file in$EDITOR. - Added timeouts to
hunk session *daemon capability and API calls so unresponsive daemons fail instead of hanging indefinitely. - Updated OpenTUI so light and dark theme backgrounds render without the native renderer's color shift.
- Prevented Git watch polling from taking optional index locks while discovering untracked files.
0.15.0 - 2026-06-08
- Show the newly selected theme in the footer status bar when switching themes.
- Added Catppuccin Frappé and Macchiato as built-in themes, completing the four official Catppuccin flavors.
- Added a Zenburn built-in theme (
theme = "zenburn"), a warm low-contrast dark palette inspired by Jani Nurminen's original Zenburn. It also works as a custom-themebase. - Added a
--transparent-bgflag andtransparent_backgroundconfig option for translucent terminal setups. - Added Sapling VCS backend support for
hunk diffandhunk show.
- Preserved split diff alignment when horizontal scrolling starts inside a wide CJK or emoji character.
- Made diff syntax highlighting follow the active theme: keyword, function, number, and variable token colors now resolve to the configured theme's palette (including custom themes) in both light and dark, instead of passing through Pierre's built-in syntax colors.
- Expanded the diff window during rapid scrolling bursts so large reviews keep real rows mounted instead of falling back to blank placeholder regions.
0.14.1 - 2026-06-01
- Added local performance benchmarks for Hunk startup, loading, rendering, highlighting, navigation, memory, and optional competitor comparisons.
- Fixed npm installs by pinning
@pierre/diffsto the version Hunk is tested with instead of allowing the broken1.2.6release.
0.14.0 - 2026-05-26
- Added Catppuccin Latte and Mocha as built-in themes.
- Added mouse-drag text selection in diff views that copies selected rows to the system clipboard via OSC 52. A
View > Copy decorationstoggle (orcopy_decorationsconfig) controls whether the clipboard includes diff rails, gutters, and file headers or only the changed code. - Added inline expansion for collapsed unchanged file content. Click an unchanged-context row (
▾ N unchanged lineswhen expandable, otherwise the static··· N unchanged lines ···form) or pressewhile a hunk is selected to reveal surrounding and trailing file lines without leaving the review. The affordance is shown only for input modes that have reachable source content (hunk diff,show,stash show, file-pairdiffanddifftool, untracked files); rawhunk patchinput still renders as before. Failed and in-flight loads surface a one-line status ("Loading…", "Could not load N unchanged lines") on the gap row. Expanded context rows use the same syntax highlighting as the surrounding diff. - Surfaced the agent author name in inline notes and the matching agent popover so multi-agent reviews are readable at a glance, with a fallback title when an annotation has no author.
- Preserved Git log ANSI colors when
hunk pagerfalls back to a plain-text terminal pager for non-diff output. - Capped inline context expansion source reads so huge files cannot freeze or exhaust memory when expanding unchanged lines.
- Hardened plain-text pager startup so
PAGERandHUNK_TEXT_PAGERshell metacharacters are passed as arguments instead of being evaluated implicitly. - Hardened terminal rendering against control-sequence injection from diffs, file paths, notes, expanded context, copied selections, and pager fallback output.
- Fixed custom theme configuration so Catppuccin Latte and Mocha can be used as base themes.
- Fixed inline note draft shortcuts so copy chords such as Ctrl-C and Ctrl-Shift-C no longer trigger note actions.
- Fixed split diff alignment for wide CJK and emoji characters by measuring rendered text in terminal cells.
- Fixed Ctrl-S saving for inline notes when tmux sends CSI-u keyboard input.
- Stabilized hover backgrounds on wrapped diff rows so add-note affordances do not shift row layout.
- Restricted session reloads so daemon commands cannot read files outside the initial Hunk session root.
- Fixed static pager output so captured pager hosts honor configured custom themes.
- Made
hunk pagerpass non-diff text through in captured pager and dumb-terminal contexts instead of spawningless. - Fixed the
eeditor shortcut when Hunk is launched from a repo subdirectory. - Fixed VCS auto-detection so a Git repository nested under a parent Jujutsu workspace still uses Git mode by default.
0.13.1 - 2026-05-19
- Hid the inline add-note affordance while scrolling and only show it after deliberate pointer movement, so it no longer flickers during review navigation.
- Hardened the local session daemon against browser-originated requests by validating Host and Origin headers and requiring JSON content types for API posts.
- Disabled the generic broker HTTP API by default so Hunk's supported session API is the only app-daemon command surface.
- Bounded session daemon memory by capping HTTP request body and websocket message sizes and rejecting session registrations with oversized file, hunk, patch, comment, or note payloads.
0.13.0 - 2026-05-18
- Added an
eshortcut to open the selected diff file in$EDITOR. - Added
gandGkeyboard aliases for jump-to-top and jump-to-bottom review navigation. - Added session-persistent user-authored inline notes with
cto draft/save notes. - Added
hunk session comment list --type <live|all|ai|agent|user>so agents can read human-authored notes through the comment workflow.
- Clarified inline note draft actions by labeling buttons as
Save (^S)andCancel (Esc).
- Fixed draft note focus handling so app shortcuts resume after the note textarea blurs without discarding the draft.
- Preserved the resolved auto theme across
--watchrefreshes instead of falling back to the default dark theme. - Fixed standalone release archive generation so staged npm package directories are not accidentally packaged as GitHub release assets.
0.12.1 - 2026-05-14
- Included the bundled Hunk review skill in standalone prebuilt release archives so
hunk skill pathworks after extracting a tarball or installing via Homebrew.
0.12.0 - 2026-05-12
- Added Homebrew tap release automation and Homebrew-aware startup update notices.
- Added lower-level
hunkdiff/opentuiprimitives for embedding Hunk diff bodies, file headers, file navigation, and multi-file review streams in custom OpenTUI apps. - Added row windowing for large single-file reviews to keep huge diffs responsive.
- Added Windows x64 prebuilt artifact publishing to the release workflow.
- Added native Windows support in the README, contributor guide, and local build/install scripts.
- Added Nix flake app outputs for
nix run, a namedhunkpackage output, and package validation. - Added automatic light/dark theme detection from the terminal background when
theme = "auto"is enabled.
- Ported
build:npm,build:bin, andinstall:binfrom bash scripts to cross-platform Bun-runnable TypeScript so native Windows contributors no longer need Git Bash to build or install Hunk locally.
- Fixed the prebuilt npm package so the
hunkdiff/opentuiexport and bundled type declarations are included. - Fixed the npm package so
npx hunkdiffand other package-name executable lookups resolve to the Hunk CLI. - Made
hunk pageremit static highlighted diff output for captured pager contexts like LazyGit, and pass diff input through unchanged when stdout is non-interactive. - Fixed Ctrl-Z job-control suspend support so Hunk can suspend and resume cleanly from a terminal.
- Fixed Windows compatibility issues across paths, packaging, and tests.
- Fixed Ctrl-C in the live TUI so it exits through Hunk's full shutdown path instead of only destroying the renderer.
0.11.1 - 2026-05-10
- Auto-detect Jujutsu checkouts for
hunk diffandhunk show, while keeping explicitvcsconfig overrides.
- Fixed large tracked and untracked file handling so very large diffs render as skipped placeholders instead of slowing startup or overflowing the JavaScript call stack.
- Fixed Git patch parsing for
diff.noprefix=trueinput so Hunk restores parser-safea/andb/prefixes without mangling real paths. - Fixed
hunk pagerparsing for Git diffs emitted withdiff.mnemonicPrefix=trueso file paths do not keepi/,w/,c/,1/, or2/side prefixes. - Fixed review scrolling so viewport updates are coalesced and no longer risk a render loop.
- Fixed agent comment hunk ranges so context lines from hunk headers remain part of the target range.
- Fixed untracked-file reviews in repositories with external diff tools configured by passing
--no-ext-diff. - Fixed diff geometry for hunks with multiple agent notes so offscreen notes no longer skew scrolling measurements.
0.11.0 - 2026-05-09
- Added
vcs = "jj"support, enablinghunk diff [revset]andhunk show [revset]. - Added a pager-mode sidebar file tree that can be revealed with the existing
sshortcut while keeping pager chrome hidden by default.
- Fixed
git log -pand multi-commitgit show -pinputs so patch parsing ignores commit metadata instead of emitting Pierre parser warnings. - Fixed cross-file hunk navigation so near-boundary jumps keep the selected file pinned and backward jumps reveal the target hunk instead of the file top.
- Fixed the View menu sidebar checkmark so it follows whether the responsive layout is actually rendering the sidebar.
0.10.0 - 2026-04-21
- Added agent comment counts in the sidebar so review-heavy files stand out at a glance.
- Added
hunk daemon serveas the standard daemon entrypoint and published reusable session-broker packages plus an OpenTUI diff component for integrators.
- Included untracked files when
hunk diff <ref>still compares against the live working tree, while keeping explicit revset diffs commit-to-commit only.
- Enabled mouse scrolling in pager mode.
- Balanced Pierre word-level highlights so split-view inline changes stay visible without overpowering the surrounding diff row.
- Smoothed mouse-wheel review scrolling so small diffs stay precise while sustained wheel gestures still speed up.
- Fixed Shift+mouse-wheel horizontal scrolling so it no longer leaks a one-line vertical scroll in some terminals.
0.9.5 - 2026-04-21
- Added a Modem sponsor block to the README.
0.9.4 - 2026-04-14
- Added
hunk skill pathto print the bundled Hunk review skill path for direct loading or symlinking in coding agents.
- Show a one-time startup notice after version changes that points users with copied agent skills to
hunk skill path.
- Restored execute permissions for packaged prebuilt binaries so
npm install -g hunkdiffworks on root-owned installs withoutspawnSync … EACCESfailures.
0.9.3 - 2026-04-13
- Normalized rename-only diff paths so pure renames keep one clean
old/path -> new/pathheader in the review UI (#194). - Stripped Pierre's empty-line newline placeholder spans so blank additions and deletions keep stable line numbers and diff row backgrounds (#201).
0.9.2 - 2026-04-11
- Fixed a bottom-edge scrolling regression where short last files could snap back and make upward navigation feel stuck near the end of the review stream (#196).
0.9.1 - 2026-04-10
- Preserved viewport position when switching layouts (#185).
- Skipped binary file contents in reviews while keeping binary files visible in the review stream with a
Binary file skippedplaceholder (#187).
0.9.0 - 2026-04-08
- Added
hunk session review --jsonfor full live-session exports (#160). - Added horizontal code-column scrolling in review mode (#171).
- Added batch apply support for live session comments in agent review flows (#179).
- Pinned the current file header while scrolling the review pane (#141).
- Made session comment focus opt-in instead of forcing comment focus by default (#163).
- Synced active hunks to mouse scrolling and prefetched diff highlighting for smoother navigation (#172).
- Hid zero-value sidebar file stats to reduce visual noise (#174).
- Updated in-app controls help (#175).
- Sped up syntax-highlight row building in large diffs (#177).
- Reported the packaged version correctly in installed builds (#153).
- Fixed stale syntax highlights after reloads (#146).
- Fixed diff pane header popping while scrolling (#159).
- Avoided failures on untracked directory symlinks (#169).
- Aligned top-menu dropdowns correctly (#176).
- Restored live escape handling in PTY flows (#173).
- Kept viewport-follow selection from jumping unexpectedly (#181).
- Refreshed stale daemons after upgrades (#178).
- Rejected incompatible live session registrations more clearly (#180).
- Versioned daemon compatibility separately from other MCP behavior (#183).
0.8.1 - 2026-03-30
- Enabled
jandkstep scrolling in normal mode (#131). - Aligned inline note rendering more cleanly beside diffs (#137).
0.8.0 - 2026-03-29
- Added file state indicators to the sidebar (#128).
- Added comment-to-comment navigation in review mode (#126).
- Included TTY and tmux pane metadata in session lists (#90).
- Added worktree-based session path targeting for session workflows (#118).
- Included untracked files in working-tree diff reviews by default (#123).
- Surfaced a transient startup update notice (#127).
- Refined top-level CLI help text and files/filter focus copy (#129, #121).
- Fixed keyboard help dialog row overlap (#122).
- Fixed scrollbar click-drag behavior on large diffs (#120).
0.7.0 - 2026-03-25
- Grouped sidebar files by folder for easier navigation in large reviews (#99).
- Added
Ctrl+D,Ctrl+U, andShift+Spacenavigation shortcuts (#102). - Added an auto-hiding vertical scrollbar to the diff pane (#93).
- Added Linux arm64 prebuilt package release support (#107).
- Prevented scroll snapback when using
Space,PageUp, andPageDown(#105). - Normalized Git patch prefixes for parser compatibility (#106).
- Kept selected hunks fully visible when they fit in the viewport (#108).
- Fixed wrap-toggle redraws while preserving the viewport anchor (#110).
0.6.1 - 2026-03-24
- Added watch mode for reloadable reviews (#91).
- Fit menu dropdowns to their contents (#92).
- Shut down idle session daemons more reliably (#96).
- Coordinated singleton daemon launches to avoid duplicate background processes (#97).
- Exited the daemon process cleanly after shutdown (#98).
0.6.0 - 2026-03-23
- Added a reload shortcut for the current diff (#83).
- Optimized large split review streams for faster rendering on big changesets (#76).
- Replaced footer hints with a keyboard help modal (#88).
- Restored daemon autostart for prebuilt npm binaries (#84).
- Detected
$bunfsvirtual paths correctly when autostarting daemons from Bun binaries (#86). - Published prerelease tags to npm under the
betadist-tag (#87).
0.5.1 - 2026-03-23
- Improved friendly Git command errors during CLI failures (#75).
0.5.0 - 2026-03-22
- Added inline agent notes across the review stream, including side-aware range guides (#69, #62).
- Added a session control CLI and a session reload command for live review workflows (#50, #63).
- Added live session comment lifecycle support and expanded the MCP tool surface (#53, #39).
- Added curated Hunk demo examples (#34).
- Made Graphite the default theme (#57).
- Switched review rendering and scroll math to an explicit review row plan for more consistent navigation (#64, #67).
- Hardened MCP daemon lifecycle handling and kept the daemon loopback-only by default (#36, #46).
- Refreshed stale MCP daemons when using the session CLI (#55).
- Let the sidebar shortcut force the files pane open (#56).
0.4.0 - 2026-03-22
- Auto-started the MCP daemon when needed for live sessions (#29).
- Added arrow-key line-by-line scrolling (#30).
0.3.0 - 2026-03-22
- Added prebuilt npm binary packaging and automated npm releases, including beta tag support (#12, #14, #15).
- Added a top-level
hunk --versioncommand (#19). - Added the experimental MCP daemon for live Hunk sessions (#22).
- Always showed the diff rail while dimming inactive hunks (#16).
- Decoupled sidebar visibility from layout toggles (#18).
- Stopped auto-saving view preferences to config files (#13).
- Used a supported Intel macOS runner for prebuilt release builds (#17).
- Preserved executable permissions for prebuilt binaries after installation.
0.2.0 - 2026-03-20
- Fixed npm installs by bundling Bun in published packages (#11).
0.1.0 - 2026-03-20
- Initial Hunk release with split and stack terminal diff views built around a single multi-file review stream.
- Added git-style
diffandshowcommands plus a general Git pager wrapper for drop-in review workflows. - Added persistent Hunk view preferences across sessions (#7).
- Added agent-note anchored review flows, responsive layouts, and display toggles for line numbers, wrapping, and hunk metadata.
- Simplified the review chrome around a menu bar, lighter borders, and diff-focused headers.
- Improved startup and large-review performance with windowed diff sections and deferred syntax highlighting.
- Stabilized diff repainting, active-hunk scrolling, syntax highlighting, pager stdin patch handling, and terminal cleanup on exit.