Skip to content

Hunk 0.21

August 30, 2026 – September 4, 2026 · 4 releases

Hunk 0.21 turns reviews into a richer agent-aware workspace with authenticated live sessions, editable threaded notes, two-revision and two-file comparisons, more responsive navigation, and a broader extension surface.

Terminal window
npm i -g hunkdiff@0.21.1

Hunk 0.21 is no longer the current release. See the latest release or all install options.

September 4, 2026

  • 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)
  • 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. (#978)

September 2, 2026

  • Navigate a live review directly to a comment returned by hunk session comment list. (#845)
  • Make the vertical space between files and hunks configurable. (#865)
  • 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. (#909)
  • Let extensions select syntax highlighting by exact filename or basename/path glob, in addition to file extensions. (#851)
  • 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. (#888)
  • Publish hunk_viewed and store-backed note_changed extension lifecycle events so progress and note UIs can follow hunk navigation and agent comments. (#939)
  • 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. (#940)
  • Require Node.js 22 or newer for npm installs. Standalone Hunk binaries continue to run without Node.js. (#917)
  • 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. (#924)
  • 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. (#933)
  • Add editable inline review notes and arbitrarily nested threaded replies with mouse and keyboard actions, including reviewer dismissal of reply-free live agent notes. (#925)
  • Add a pane-wide onActivate callback to the extension API for primary mouse presses. (#965)
  • 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. (#938)
  • 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. (#921)
  • Enable unchanged-context expansion in Jujutsu-backed reviews. (#890)
  • 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. (#968)
  • Provide complete key event data to command matchers and programmatically invoked handlers. (#774)
  • Add Ctrl-D and Ctrl-U aliases for half-page review scrolling. (#855)
  • Fence late session lifecycle commits so stopped or replaced generations cannot authenticate, reconnect, publish daemon launch metadata, or mutate broker client state. (#955)
  • Keep explicit top and bottom jumps from being overridden by a pending selection reveal. (#928)
  • 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. (#908)
  • Fill the review stream on first paint instead of leaving it blank until the user scrolls. (#922)
  • Contain unexpected session broker lifecycle failures behind one fixed, redacted user-visible message. (#956)
  • Let focused editors inside extension panes receive keys before Hunk's global shortcuts. (#954)
  • 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. (#919)
  • Retry session broker connections after synchronous WebSocket startup failures. (#950)
  • Keep iTerm2 sessions connected to the local session daemon when their terminal identifiers contain native punctuation. (#936)
  • Keep wrapped diff geometry aligned with rendered note-guide and add-note columns. (#858)
  • Accept the documented dim tone when routing line-highlight commands through the session daemon. (#937)
  • Recognize pacman/AUR-managed installations via HUNK_INSTALL_SOURCE=pacman and suppress automatic update notices for them. (#850)
  • Upgrade the OpenTUI runtime and reusable component peer requirement to 0.5.6. (#914)
  • Publish dated prerelease notes on hunk.dev without promoting them as the latest stable release or default install target. (#961)
  • Refuse curl installs alongside competing Hunk binaries unless explicitly forced, and print each conflicting path, version, PATH precedence, and package-manager removal guidance. (#960)
  • Exit cleanly when the terminal hosting a review disconnects instead of leaving an unreachable Hunk process behind. (#724)
  • Restore first-frame and scroll responsiveness for large review streams. (#942)
  • 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. (#828)
  • 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. (#825)
  • Refuse to start watch mode under Bun versions older than 1.3.14, which can deadlock filesystem watcher cleanup and leave Hunk unresponsive. (#902)

September 1, 2026

  • Add a pane-wide onActivate callback to the extension API for primary mouse presses. (#965)
  • Fence late session lifecycle commits so stopped or replaced generations cannot authenticate, reconnect, publish daemon launch metadata, or mutate broker client state. (#955)
  • Contain unexpected session broker lifecycle failures behind one fixed, redacted user-visible message. (#956)
  • Let focused editors inside extension panes receive keys before Hunk's global shortcuts. (#954)
  • Retry session broker connections after synchronous WebSocket startup failures. (#950)
  • Publish dated prerelease notes on hunk.dev without promoting them as the latest stable release or default install target. (#961)
  • Refuse curl installs alongside competing Hunk binaries unless explicitly forced, and print each conflicting path, version, PATH precedence, and package-manager removal guidance. (#960)

August 30, 2026

  • Navigate a live review directly to a comment returned by hunk session comment list. (#845)
  • Make the vertical space between files and hunks configurable. (#865)
  • 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. (#909)
  • Let extensions select syntax highlighting by exact filename or basename/path glob, in addition to file extensions. (#851)
  • 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. (#888)
  • Publish hunk_viewed and store-backed note_changed extension lifecycle events so progress and note UIs can follow hunk navigation and agent comments. (#939)
  • 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. (#940)
  • Require Node.js 22 or newer for npm installs. Standalone Hunk binaries continue to run without Node.js. (#917)
  • 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. (#924)
  • 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. (#933)
  • Add editable inline review notes and arbitrarily nested threaded replies with mouse and keyboard actions, including reviewer dismissal of reply-free live agent notes. (#925)
  • 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. (#938)
  • 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. (#921)
  • Enable unchanged-context expansion in Jujutsu-backed reviews. (#890)
  • Provide complete key event data to command matchers and programmatically invoked handlers. (#774)
  • Add Ctrl-D and Ctrl-U aliases for half-page review scrolling. (#855)
  • Keep explicit top and bottom jumps from being overridden by a pending selection reveal. (#928)
  • 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. (#908)
  • Fill the review stream on first paint instead of leaving it blank until the user scrolls. (#922)
  • 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. (#919)
  • Keep iTerm2 sessions connected to the local session daemon when their terminal identifiers contain native punctuation. (#936)
  • Keep wrapped diff geometry aligned with rendered note-guide and add-note columns. (#858)
  • Accept the documented dim tone when routing line-highlight commands through the session daemon. (#937)
  • Recognize pacman/AUR-managed installations via HUNK_INSTALL_SOURCE=pacman and suppress automatic update notices for them. (#850)
  • Upgrade the OpenTUI runtime and reusable component peer requirement to 0.5.6. (#914)
  • Exit cleanly when the terminal hosting a review disconnects instead of leaving an unreachable Hunk process behind. (#724)
  • Restore first-frame and scroll responsiveness for large review streams. (#942)
  • 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. (#828)
  • 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. (#825)
  • Refuse to start watch mode under Bun versions older than 1.3.14, which can deadlock filesystem watcher cleanup and leave Hunk unresponsive. (#902)

Newer: Hunk 0.22 · Older: Hunk 0.20 · All releases