Skip to content

Hunk 0.18

August 1, 2026 – August 14, 2026 · 4 releases

Hunk 0.18.0 makes reviews more precise, customizable, and extensible—while improving performance and reliability across large repositories and diverse terminals.

Terminal window
npm i -g hunkdiff@0.18.2

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

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

August 14, 2026

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

August 11, 2026

  • Fix malformed @@ hunk headers so each side's line range and count are emitted correctly.
  • 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.
  • 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.

August 8, 2026

  • Let custom themes override exact Shiki/TextMate syntax scopes while keeping deprecated syntax-role colors compatible. (#570)
  • Let extension commands navigate directly to visible files and hunks. (#629)
  • Give extension commands a snapshot of the file and hunk the user is reviewing. (#616)
  • Render tabs at four-column stops by default, with CLI and config overrides. (#588)
  • Add experimental React/OpenTUI component rows to extension file views without giving up Hunk's review navigation and notes. (#632)
  • Add a visible current-line cursor so j/k move line by line and c comments exactly where the cursor sits. (#662)
  • Let extension commands open Hunk-native confirmation, selection, and text-input dialogs. (#617)
  • Add extension UI lifecycle events, sidebar controls, and inter-extension events. (#619)
  • Add experimental TypeScript extensions for custom themes, VCS backends, changeset transforms, lifecycle hooks, config, and notifications. (#599)
  • Let interactive extension file views handle keys until Escape returns control to Hunk. (#675)
  • Let stateful extension file views refresh their rendered layouts in place. (#673)
  • Expose resolved user keybindings to extension sidebars so their controls honor remapping and unbinding. (#615)
  • Add experimental rich STML agent notes with preview commands and live width feedback. (#512)
  • Make menus and help reflect actual keybindings, and add an Extensions menu for contributed commands. (#614)
  • Let extensions add commands and multiple sidebars, with configurable keybindings and safe conflict handling. (#611)
  • Give piped pager reviews the same navigation, filtering, layout, and sidebar controls as regular reviews. (#647)
  • Expose stable hunk summaries to extension events, sidebars, commands, and file views. (#626)
  • Add an experimental extension file-view API and an optional rendered Markdown example. (#632)
  • Offer to save changed themes and view preferences when quitting. (#468)
  • Let extensions replace file navigation with custom React sidebars while safely falling back to Hunk's sidebar on errors. (#609)
  • Let extension commands read reviewed files and write them back with user confirmation. (#674)
  • Reduce Git polling and CPU use in watch mode while preserving reliable refreshes. (#531)
  • Make repo-extension trust persist across symlinked and alternate path spellings. (#599)
  • Show the changed-file count beside addition and deletion totals. (#684)
  • Preserve syntax highlighting when visible hunks begin inside folded multiline constructs. (#669)
  • Make remapped ctrl+letter shortcuts work when terminals send bare control characters. (#675)
  • Discover .tsx and .jsx extension entries and clarify extension authoring guidance. (#625)
  • Let folder extensions declare multiple entry points and dependencies in package.json. (#606)
  • Keep current-line navigation responsive and memory-efficient in large reviews and long wrapped rows. (#685)
  • Make extensions safer and more reliable across loading, reloads, themes, lifecycle handlers, and custom VCS detection. (#599)
  • Load a directory passed as an extension from its index entry instead of treating every file as a separate extension. (#606)
  • Keep file statistics visible and paths readable on narrow terminals. (#668)
  • Prevent one keypress from triggering both a modal action and the focused review control. (#649)
  • Require --experimental before rendering rich STML agent notes. (#589)
  • Label repository-root files with ./ in the sidebar. (#519)
  • Reduce watch-mode startup time on macOS and Windows with native recursive observation. (#531)
  • Display tracked CJK and emoji filenames correctly throughout reviews and session APIs. (#670)
  • Warn when deprecated custom syntax colors are translated to approximate Shiki scopes. (#574)
  • Restart stale session daemons after upgrades so live comments keep working. (#572)
  • Resolve a shell-quote denial-of-service vulnerability and keep direct-file watch refreshes responsive. (#627)
  • Document the supported scrolling and selection-following contract for custom extension sidebars. (#630)
  • Generate the bundled review skill from the CLI surface so commands, errors, and flags stay accurate. (#596)
  • Avoid preparing inactive custom file views, reducing work and retained memory in normal diff reviews. (#652)
  • Keep file navigation focused on the file it just selected, even on loaded machines. (#655)
  • Keep one-line scrolling consistent after clicking inside the review stream. (#645)
  • Write saved state atomically and preserve corrupt state files for recovery. (#599)
  • Improve STML guidance for composing rich content inside Hunk's native note frame. (#573)
  • Show Nix-specific update instructions for Nix installations. (#598)

August 1, 2026

  • Add exact Shiki/TextMate overrides via custom_theme.syntax_scopes, with compatibility for deprecated custom_theme.syntax. (#570)
  • Add live ctx.navigation.selectFile and selectHunk APIs for guarded review-stream navigation. (#629)
  • Give extension commands a frozen snapshot of the current review selection through ctx.selection. (#616)
  • Render tabs at four-column stops by default, configurable through tab_width, -x, or --tab-width. (#588)
  • Advance the extension API to v2 with experimental fixed-height React/OpenTUI file-view rows and semantic theme painting. (#632)
  • Add queued ctx.dialogs.confirm, select, and input prompts to extension commands. (#617)
  • Add extension UI lifecycle events, sidebar controls for event handlers, and an inter-extension event bus. (#619)
  • Add experimental TypeScript extensions, bundled VCS adapters, multiple custom themes, trust controls, and configurable loading paths. (#599)
  • Expose resolved command keybindings to custom extension sidebars so they honor remapping and unbinding. (#615)
  • Add experimental STML agent-note markup, hunk markup guide/render, and live note-width validation APIs. (#512)
  • Make menus and help reflect remapped keys, add an Extensions menu, and expose formerly menu-only actions as commands. (#614)
  • Add extension commands, multiple sidebar views, configurable [keybindings], shared key APIs, and namespaced command/view IDs. (#611)
  • Give hunk pager the full review controls while keeping its menu bar and sidebar initially hidden. (#647)
  • Expose ordered ExtensionDiffHunk summaries with headers, indexes, and inclusive line spans in public file views. (#626)
  • Add an experimental host-rendered extension file-view contract and an optional Markdown preview example. (#632)
  • Offer to save changed view preferences on quit, with a persistent “never ask” option. (#468)
  • Let extensions replace file navigation with React sidebars that receive live review props and safe navigation actions. (#609)
  • Reduce Git polling and CPU use in watch mode while preserving continuous refreshes with a polling fallback. (#531)
  • Store repo-extension trust by canonical root so trusted extensions load through symlinked and Windows short paths. (#599)
  • Discover .tsx and .jsx extension entries alongside TypeScript and JavaScript entries. (#625)
  • Support folder-extension entry points and multiple entries through package.json hunk.extensions manifests. (#606)
  • Harden extension types, themes, lifecycle data, reloads, VCS detection, configured paths, and user-facing failures. (#599)
  • Load directories with index.ts, index.js, or index.mjs as single folder extensions. (#606)
  • Prevent one keypress from triggering both a modal action and the focused widget beneath it. (#649)
  • Require --experimental for STML note rendering and advertise the stml capability only in opted-in sessions. (#589)
  • Label repo-root file runs with a ./ sidebar header without changing review order. (#519)
  • Reduce watch-mode startup cost on macOS and Windows with bounded native recursive filesystem observation. (#531)
  • Show a startup notice when deprecated custom_theme.syntax colors are translated to approximate Shiki scopes. (#574)
  • Restart stale session daemons during upgrades so rich STML comments reach live reviews. (#572)
  • Upgrade shell-quote against a denial-of-service flaw and keep file-watch refreshes responsive after missed events. (#627)
  • Document the supported scrollbox ref, stable row IDs, selection following, and pane geometry APIs for custom sidebars. (#630)
  • Generate the hunk-review skill from typed session commands and document missing note, markup, rationale, and author flags. (#596)
  • Skip inactive custom file-view preparation to reduce rerenders and retained memory in raw-diff reviews. (#652)
  • Keep delayed scroll alignment from changing the file selected by navigation. (#655)
  • Preserve one-line keyboard scrolling after clicking in the review stream. (#645)
  • Write state.json atomically and preserve unreadable state as state.json.corrupt. (#599)
  • Teach STML authors to compose within Hunk’s native note frame while preserving focused inset boxes. (#573)
  • Show Nix-aware update guidance instead of suggesting npm installation for the Nix package. (#598)

Newer: Hunk 0.19 · Older: Hunk 0.17 · All releases