Skip to content

Latest commit

 

History

History
1325 lines (763 loc) · 120 KB

File metadata and controls

1325 lines (763 loc) · 120 KB

Changelog

0.23.0

Minor Changes

  • #1129 0a67560 - Bundle hunk gh for 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 a less-style prompt on the status row and n / N step 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 adds ctx.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 restart when 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 session commands fail with a structured daemon-build-mismatch error that says which side is older, counts the attached windows, and recommends an action; under --json it is returned in-band with the build details.

    New hunk daemon status reports the daemon's version, uptime, and attached windows, and new hunk daemon restart replaces the daemon with one from the current build after confirming how many windows that disconnects. Under HUNK_DEBUG=1 the 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 and hunk log search, 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 a terminal theme 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 on SIGWINCH, so switching terminal themes restyles a running Hunk.

Patch Changes

  • #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 - Fix hunk patch (and other review flows) under the Nix flake package by installing the hunkdiff alias next to hunk, 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 a MaxListenersExceededWarning over 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, preferring hunkdiff/skills, then skills, then node_modules/hunkdiff/skills within 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 (zed and zeditor) when opening a file with e, matching the existing Helix support.

0.22.0

Minor Changes

  • #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 configurable hunk.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 interactive hunk 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 interactive hunk log with themed GitHub-style day groups, account-like author handles, relative timestamps, and an optional commit graph view.

  • #1038 9919017 - Add v visual 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 - Open hunk log as 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.

Patch Changes

  • #1075 0d68a61 - Watch mode no longer freezes the review while checking Git for changes, and extension API generation 25 adds Promise-returning, cancellable watchSignature hooks.

  • #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 an animations = false config 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 - Make alt and option keybindings work with both legacy terminal and Kitty keyboard encodings while preserving distinct Meta bindings when the terminal reports them.

  • #992 554cfc0 - Keep hunk log and 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 interactive hunk log session, 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 - Use 1 for unified diffs and 2 for 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 so fg restores the TUI and its in-progress state.

  • #1051 64c0abd - Keep wrapped diff rows responsive by sharing one hover target across their visual lines.

0.22.0-beta.1

Minor Changes

  • #1064 661534f - Show commit and comparison information, including short revision IDs, above direct CLI revision reviews for Git, Jujutsu, and Sapling.

Patch Changes

  • #1069 f5b8b24 - Route curl-install release checks through globally refreshed metadata by default while retaining direct GitHub fallback and analytics opt-outs.

  • #1068 795d835 - Use 1 for unified diffs and 2 for split diffs by default.

0.22.0-beta.0

Minor Changes

  • #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 configurable hunk.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 interactive hunk 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 interactive hunk log with themed GitHub-style day groups, account-like author handles, relative timestamps, and an optional commit graph view.

  • #1038 9919017 - Add v visual 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 - Open hunk log as 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.

Patch Changes

  • #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 an animations = false config 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 - Make alt and option keybindings work with both legacy terminal and Kitty keyboard encodings while preserving distinct Meta bindings when the terminal reports them.

  • #992 554cfc0 - Keep hunk log and 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 interactive hunk log session, 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 so fg restores the TUI and its in-progress state.

  • #1051 64c0abd - Keep wrapped diff rows responsive by sharing one hover target across their visual lines.

0.21.1

Patch Changes

  • #978 bfbfac8 - Fix hunk pager pegging 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 a git log --graph --color=always stream 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 - Fix hunk pager truncating 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.

0.21.0

Minor Changes

  • #845 a572286 - Navigate a live review directly to a comment returned by hunk session comment list.

  • #865 4bb3f84 - Make the vertical space between files and hunks configurable.

  • #909 a78dac9 - Add a dim tone to hunk.registerLineHighlighter and hunk session highlight add for 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-free hunk gh 123 example that fetches GitHub pull-request diffs directly.

  • #939 e1c292b - Publish hunk_viewed and store-backed note_changed extension 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 on currentLine, 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 adds ExtensionPaneSize.fraction for 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-wide onActivate callback to the extension API for primary mouse presses.

  • #938 598e084 - Support backend-native hunk diff <from> <to> reviews across Git, Jujutsu, and Sapling, with pinned source expansion, working-copy isolation, explicit hunk diff --files <left> <right> file comparison, and structured rangeEndpoints in 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.

Patch 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 establish hunk update as 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 documented dim tone when routing line-highlight commands through the session daemon.

  • #850 65d1c20 - Recognize pacman/AUR-managed installations via HUNK_INSTALL_SOURCE=pacman and 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.

0.21.0-beta.1

Minor Changes

  • #965 034796a - Add a pane-wide onActivate callback to the extension API for primary mouse presses.

Patch Changes

  • #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.

0.21.0-beta.0

Minor Changes

  • #845 a572286 - Navigate a live review directly to a comment returned by hunk session comment list.

  • #865 4bb3f84 - Make the vertical space between files and hunks configurable.

  • #909 a78dac9 - Add a dim tone to hunk.registerLineHighlighter and hunk session highlight add for 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-free hunk gh 123 example that fetches GitHub pull-request diffs directly.

  • #939 e1c292b - Publish hunk_viewed and store-backed note_changed extension 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 on currentLine, 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 adds ExtensionPaneSize.fraction for 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-native hunk diff <from> <to> reviews across Git, Jujutsu, and Sapling, with pinned source expansion, working-copy isolation, explicit hunk diff --files <left> <right> file comparison, and structured rangeEndpoints in 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.

Patch 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 establish hunk update as 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 documented dim tone when routing line-highlight commands through the session daemon.

  • #850 65d1c20 - Recognize pacman/AUR-managed installations via HUNK_INSTALL_SOURCE=pacman and 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.

0.20.1

Patch Changes

  • 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 VCS range or ref values look like command options. A caller reaching the session broker could otherwise inject git flags such as --output=<path> through a /session-api reload request and make Hunk write diff output to an arbitrary path.

0.20.0

Minor Changes

  • #799 61ca92d - Add a curl installer (curl -fsSL https://hunk.dev/install.sh | sh) with checksum verification, and teach hunk update to update curl installs.

  • #779 bf28a59 - Let extension commands inspect ctx.selection.currentLine; TypeScript authors constructing ExtensionReviewSelection must add its required field.

  • #833 1210c08 - Let extension commands capture immutable snapshots of stable review files and every saved review note.

  • #788 7d25fbf - Add hunk update to self-update Hunk with the package manager that installed it (npm or Homebrew), with guidance for Nix, mise, and source installs.

Patch Changes

  • #809 8a2e0d8 - Keep the active code line fixed in place while an inline comment form pushes following content down.

  • #784 4aea1e1 - Keep hunk --version, --help, daemon serve, and hunk 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 --fast offload 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.

0.19.1

Patch Changes

  • 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's color.moved highlights are no longer lost when wrap_lines is 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.

0.19.0

Highlights

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 $EDITOR opens 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 --fast highlighting 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.

Minor Changes

  • #728 bb6405e - Agents can now light up exact character ranges in a live review with hunk session highlight add / clear (five contrast-guaranteed tones, painted through the same pipeline as extension line highlights), and hunk session navigate line 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 let hunk skill path [name] print any bundled skill.

  • #713 ee97fef - Open $EDITOR at 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 with hunk extension install <owner>/<repo>[@ref] (plus list, update, and remove), let extension manifests declare a minimum API version via "hunk": {"apiVersion": N}, and find community extensions under the hunk-extension GitHub topic.

  • #726 9bdb0bb - Extensions can mark character ranges inside diff lines with hunk.registerLineHighlighter (API v5): source-addressed, tone-based marks painted inside Hunk's own rendering with guaranteed contrast on every line kind, invalidated through ctx.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 of hunkdiff/opentui need to move their @opentui/core and @opentui/react peer 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 with ctx.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.

Patch Changes

  • #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, and hunk 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 experimental hunk --fast mode 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 that mise use -g hunk now 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-diff hunk pager output 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 - Fix hunk diff taking tens of seconds in repos with many untracked files by synthesizing untracked diffs in-process instead of spawning one git diff --no-index subprocess per file.

  • #760 e5116b3 - Name the public files-pane command hunk.view.toggleFilesPane, preserve hunk.view.toggleSidebar as a compatibility alias, and require hunk:files when directly controlling the built-in pane.

0.18.2

Patch Changes

  • #742 568e7a5 - Fix hunk diff taking tens of seconds in repos with many untracked files by synthesizing untracked diffs in-process instead of spawning one git diff --no-index subprocess per file.

0.18.1

Patch Changes

  • 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-diff hunk pager output for captured pager hosts, so LazyGit's branch log renders in its normal per-branch palette instead of a single color.

0.18.0

Highlights

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, and c adds 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.

Minor Changes

  • #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 so j/k move line by line and c comments 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.

Patch Changes

  • #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 remapped ctrl+letter shortcuts work when terminals send bare control characters.

  • #625 8396284 - Discover .tsx and .jsx extension entries and clarify extension authoring guidance.

  • #606 a9910f1 - Let folder extensions declare multiple entry points and dependencies in package.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 its index entry 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 --experimental before 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.

0.18.0-beta.0

Minor Changes

  • #570 - Add exact Shiki/TextMate overrides via custom_theme.syntax_scopes, with compatibility for deprecated custom_theme.syntax.

  • #629 - Add live ctx.navigation.selectFile and selectHunk APIs 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, and input prompts 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 pager the full review controls while keeping its menu bar and sidebar initially hidden.

  • #626 - Expose ordered ExtensionDiffHunk summaries 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.

Patch Changes

  • #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 .tsx and .jsx extension entries alongside TypeScript and JavaScript entries.

  • #606 - Support folder-extension entry points and multiple entries through package.json hunk.extensions manifests.

  • #599 - Harden extension types, themes, lifecycle data, reloads, VCS detection, configured paths, and user-facing failures.

  • #606 - Load directories with index.ts, index.js, or index.mjs as single folder extensions.

  • #649 - Prevent one keypress from triggering both a modal action and the focused widget beneath it.

  • #589 - Require --experimental for STML note rendering and advertise the stml capability 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.syntax colors are translated to approximate Shiki scopes.

  • #572 - Restart stale session daemons during upgrades so rich STML comments reach live reviews.

  • #627 - Upgrade shell-quote against 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.json atomically and preserve unreadable state as state.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.

0.17.7

Patch Changes

  • 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's systems input to the same list so building the aarch64-darwin package never forces an Intel macOS Nixpkgs. The system list is exposed as a systems flake input for consumers that need to override it.

0.17.6

Patch Changes

  • 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.

0.17.5

Patch Changes

  • 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.

0.17.4

Patch Changes

  • 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.

0.17.3

Patch Changes

  • 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.

0.17.2

Patch Changes

  • 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.

0.17.1

Patch Changes

  • 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 HOME is unavailable.

0.17.0

Minor Changes

  • 6cd39c9: Add a configurable menu bar toggle so keyboard-driven reviews can reclaim one row of terminal space.
  • 8945272: Add an enableClaudeIntegration home-manager option that links the packaged hunk-review skill into ~/.claude/skills, so Nix users get the Claude Code review skill without manual setup.
  • d2be4e7: Add an enableJujutsuIntegration home-manager option that sets hunk as the jujutsu pager and switches ui.diff-formatter to :git so jj emits diffs hunk can render.

Patch Changes

  • 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 .mts and .cts files as TypeScript instead of plain text.
  • ed8268a: Stop treating Escape as a global quit shortcut; use q to 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, so hunk session commands never found a live session.

0.16.0

Minor Changes

  • 8ffe0ba: Refresh Hunk's built-in theme system, default to github-dark-default, and simplify theme selection around one theme setting with View -> Themes… / t opening the selector. Custom themes can inherit from any built-in theme with custom_theme.base while keeping explicit syntax color overrides, and removed theme ids such as graphite and paper remain accepted as compatibility aliases.

Patch Changes

  • 4bef148: Allow session comment cleanup commands to remove human c notes: comment rm accepts user:* note ids, and comment clear --include-user/--all clears user notes alongside live agent comments.
  • 48b97ac: Adopt Changesets for release-note fragments so pull requests can avoid conflicting CHANGELOG.md edits.
  • c0cf637: Prevent standalone Hunk binaries from loading bunfig.toml files 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

  • 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.

Changed

Fixed

  • 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

Added

Changed

  • 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.

Fixed

  • Honored --transparent-bg and transparent_background in 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

Fixed

  • Restored the e keyboard 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

Added

  • 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-theme base.
  • Added a --transparent-bg flag and transparent_background config option for translucent terminal setups.
  • Added Sapling VCS backend support for hunk diff and hunk show.

Changed

Fixed

  • 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

  • Added local performance benchmarks for Hunk startup, loading, rendering, highlighting, navigation, memory, and optional competitor comparisons.

Changed

Fixed

  • Fixed npm installs by pinning @pierre/diffs to the version Hunk is tested with instead of allowing the broken 1.2.6 release.

0.14.0 - 2026-05-26

Added

  • 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 decorations toggle (or copy_decorations config) 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 lines when expandable, otherwise the static ··· N unchanged lines ··· form) or press e while 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-pair diff and difftool, untracked files); raw hunk patch input 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.

Changed

Fixed

  • Preserved Git log ANSI colors when hunk pager falls 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 PAGER and HUNK_TEXT_PAGER shell 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 pager pass non-diff text through in captured pager and dumb-terminal contexts instead of spawning less.
  • Fixed the e editor 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

Fixed

  • 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

  • Added an e shortcut to open the selected diff file in $EDITOR.
  • Added g and G keyboard aliases for jump-to-top and jump-to-bottom review navigation.
  • Added session-persistent user-authored inline notes with c to 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.

Changed

  • Clarified inline note draft actions by labeling buttons as Save (^S) and Cancel (Esc).

Fixed

  • Fixed draft note focus handling so app shortcuts resume after the note textarea blurs without discarding the draft.
  • Preserved the resolved auto theme across --watch refreshes 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

Fixed

  • Included the bundled Hunk review skill in standalone prebuilt release archives so hunk skill path works after extracting a tarball or installing via Homebrew.

0.12.0 - 2026-05-12

Added

  • Added Homebrew tap release automation and Homebrew-aware startup update notices.
  • Added lower-level hunkdiff/opentui primitives 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 named hunk package output, and package validation.
  • Added automatic light/dark theme detection from the terminal background when theme = "auto" is enabled.

Changed

  • Ported build:npm, build:bin, and install:bin from bash scripts to cross-platform Bun-runnable TypeScript so native Windows contributors no longer need Git Bash to build or install Hunk locally.

Fixed

  • Fixed the prebuilt npm package so the hunkdiff/opentui export and bundled type declarations are included.
  • Fixed the npm package so npx hunkdiff and other package-name executable lookups resolve to the Hunk CLI.
  • Made hunk pager emit 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

Added

Changed

  • Auto-detect Jujutsu checkouts for hunk diff and hunk show, while keeping explicit vcs config overrides.

Fixed

  • 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=true input so Hunk restores parser-safe a/ and b/ prefixes without mangling real paths.
  • Fixed hunk pager parsing for Git diffs emitted with diff.mnemonicPrefix=true so file paths do not keep i/, w/, c/, 1/, or 2/ 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

  • Added vcs = "jj" support, enabling hunk diff [revset] and hunk show [revset].
  • Added a pager-mode sidebar file tree that can be revealed with the existing s shortcut while keeping pager chrome hidden by default.

Changed

Fixed

  • Fixed git log -p and multi-commit git show -p inputs 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

  • Added agent comment counts in the sidebar so review-heavy files stand out at a glance.
  • Added hunk daemon serve as the standard daemon entrypoint and published reusable session-broker packages plus an OpenTUI diff component for integrators.

Changed

  • Included untracked files when hunk diff <ref> still compares against the live working tree, while keeping explicit revset diffs commit-to-commit only.

Fixed

  • 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

  • Added a Modem sponsor block to the README.

Changed

Fixed

0.9.4 - 2026-04-14

Added

  • Added hunk skill path to print the bundled Hunk review skill path for direct loading or symlinking in coding agents.

Changed

  • Show a one-time startup notice after version changes that points users with copied agent skills to hunk skill path.

Fixed

  • Restored execute permissions for packaged prebuilt binaries so npm install -g hunkdiff works on root-owned installs without spawnSync … EACCES failures.

0.9.3 - 2026-04-13

Fixed

  • Normalized rename-only diff paths so pure renames keep one clean old/path -> new/path header 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

  • 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

Fixed

  • 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 skipped placeholder (#187).

0.9.0 - 2026-04-08

Added

  • Added hunk session review --json for 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).

Changed

  • 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).

Fixed

  • 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

Fixed

  • Enabled j and k step scrolling in normal mode (#131).
  • Aligned inline note rendering more cleanly beside diffs (#137).

0.8.0 - 2026-03-29

Added

  • 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).

Changed

  • 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

  • Fixed keyboard help dialog row overlap (#122).
  • Fixed scrollbar click-drag behavior on large diffs (#120).

0.7.0 - 2026-03-25

Added

  • Grouped sidebar files by folder for easier navigation in large reviews (#99).
  • Added Ctrl+D, Ctrl+U, and Shift+Space navigation shortcuts (#102).
  • Added an auto-hiding vertical scrollbar to the diff pane (#93).
  • Added Linux arm64 prebuilt package release support (#107).

Fixed

  • Prevented scroll snapback when using Space, PageUp, and PageDown (#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

  • Added watch mode for reloadable reviews (#91).

Changed

  • Fit menu dropdowns to their contents (#92).

Fixed

  • 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

  • Added a reload shortcut for the current diff (#83).

Changed

  • Optimized large split review streams for faster rendering on big changesets (#76).
  • Replaced footer hints with a keyboard help modal (#88).

Fixed

  • Restored daemon autostart for prebuilt npm binaries (#84).
  • Detected $bunfs virtual paths correctly when autostarting daemons from Bun binaries (#86).
  • Published prerelease tags to npm under the beta dist-tag (#87).

0.5.1 - 2026-03-23

Fixed

  • Improved friendly Git command errors during CLI failures (#75).

0.5.0 - 2026-03-22

Added

  • 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).

Changed

  • Made Graphite the default theme (#57).
  • Switched review rendering and scroll math to an explicit review row plan for more consistent navigation (#64, #67).

Fixed

  • 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

Added

  • 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

  • Added prebuilt npm binary packaging and automated npm releases, including beta tag support (#12, #14, #15).
  • Added a top-level hunk --version command (#19).
  • Added the experimental MCP daemon for live Hunk sessions (#22).

Changed

  • 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).

Fixed

  • 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

  • Fixed npm installs by bundling Bun in published packages (#11).

0.1.0 - 2026-03-20

Added

  • Initial Hunk release with split and stack terminal diff views built around a single multi-file review stream.
  • Added git-style diff and show commands 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.

Changed

  • 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.

Fixed

  • Stabilized diff repainting, active-hunk scrolling, syntax highlighting, pager stdin patch handling, and terminal cleanup on exit.