v0.22.0-beta.0
Pre-releaseHunk 0.22 beta: history becomes a review workspace
Hunk 0.22 turns repository history into a responsive review workspace: browse commits, select contiguous ranges, carry review context into the diff, and leave precise threaded feedback without leaving the terminal.
hunk update 0.22.0-beta.0
npm install -g hunkdiff@0.22.0-beta.0Browse commits and review ranges
hunk log now opens a responsive, themed history browser for Git and Jujutsu. Commits are grouped by day, optional graph lines preserve topology, and visual or Shift-based range selection opens the cumulative diff for a contiguous set of commits. History has configurable command bindings, merge-parent selection, and keeps your theme and diff preferences as you move between history and review. #979 #987 #1011 #1031 #1038 #1039
Select and discuss exact code ranges
Persistent mouse and keyboard selections can now span multiple lines and drive explicit Comment, Copy, and Clear actions. Inline notes and replies participate in keyboard navigation, and agents can reply through the session CLI while inheriting the original code anchor. #931 #1012 #1044
Richer extension-powered reviews
Extensions can attach provider-neutral review metadata when delegating patches, expose that context to panes and live-session snapshots, and request a coalesced reload after an external agent changes reviewed files. The extension directory also adds hunk-gh, hunk-viewed, hunk-history, and hunk-compact-filenav. #986 #988 #981 #995 #1034
Faster, steadier terminal interaction
Long wrapped lines render and respond faster, pane animations are capped at 30 FPS and can be disabled, sidebar folders collapse without breaking navigation, suspended sessions resume cleanly, and direct-file reviews reload correctly outside repositories. #1043 #1051 #1036 #1009 #996 #1054
Compatibility notes
unifiedis now the canonical name for the single-column diff layout. ExistingstackCLI and configuration values remain accepted as deprecated aliases and normalize tounified.- Extension API v23 adds
canonicalModeandcanonicalLayout, which reportunified; legacy fields continue to reportstackfor compatibility. - OpenTUI integrations can use
canonicalLayout: "split" | "unified"; the legacylayout: "split" | "stack"prop remains source-compatible, andcanonicalLayoutwins when both are supplied. hunk logopens the interactive history browser when attached to a terminal. Use--staticfor scripted terminal output; pipes remain static.- Review commands now print static plain text instead of launching the TUI when stdout is not a terminal.
- The bundled runtime is upgraded to Bun 1.4.2.
Community contributors
- @samuela improved daemon health-probe failure reporting. #927
- @saadjs led the
stack-to-unifiedlayout transition while preserving compatibility. #945 - @any-victor added
hunk-historyto the extension directory. #995 - @HackAttack fixed suspended-job resume behavior. #996
- @rschoch added
hunk-compact-filenavto the extension directory. #1034
All merged pull requests
- test(website): cover stable changelog promotion by @benvinegar in #973
- feat(website): add VCS landing pages and sitemap alias by @benvinegar in #970
- Add hunk-gh, hunk-viewed to hunk-extension marketplace by @benvinegar in #981
- fix(pager): stop CPU pegging and truncation on large piped documents by @benvinegar in #978
- feat(extensions): show delegated review metadata by @benvinegar in #986
- feat(extensions): add review reload requests by @benvinegar in #988
- build: upgrade Bun to 1.4.2 by @benvinegar in #990
- feat: add static-first history browsing by @benvinegar in #979
- refactor(ui): share desktop chrome with history by @benvinegar in #983
- feat(ui): make history automatically responsive by @benvinegar in #987
- fix(ui): prepare history reviews before terminal handoff by @benvinegar in #989
- refactor(ui): keep history reviews in one renderer by @benvinegar in #992
- refactor: move hunkdiff into packages/hunk by @benvinegar in #997
- docs(website): list hunk-history in the extension directory by @any-victor in #995
- refactor(ui): route surfaces through one session runtime by @benvinegar in #998
- refactor(extensions): centralize session ownership by @benvinegar in #999
- fix(ui): keep suspended jobs alive upon fg by @HackAttack in #996
- feat(ui): collapse sidebar tree folders by @benvinegar in #1009
- test(ui): harden job control resume coverage by @benvinegar in #1010
- refactor: extract bundled Git provider by @benvinegar in #1001
- refactor: extract shared VCS infrastructure by @benvinegar in #1005
- refactor: extract bundled Jujutsu provider by @benvinegar in #1002
- refactor: extract bundled Sapling provider by @benvinegar in #1003
- feat(cli): support replies to review comments by @benvinegar in #1012
- feat(ui): group history by day by @benvinegar in #1011
- docs(architecture): refresh maintainer guidance by @benvinegar in #1013
- chore: organize repository scripts by @benvinegar in #1014
- fix(ui): save log view preferences by @benvinegar in #1015
- refactor(ui): use default diff row memo comparison by @benvinegar in #1017
- refactor(ui): inline diff row dispatch by @benvinegar in #1018
- refactor(ui): require planned diff rows by @benvinegar in #1019
- feat(ui): show history commit metadata in reviews by @benvinegar in #1016
- refactor(ui): make diff row dispatch exhaustive by @benvinegar in #1025
- refactor(ui): share diff row note targets by @benvinegar in #1026
- refactor(ui): clarify raw diff row planning by @benvinegar in #1027
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #966
- feat(dev): add disposable Firecracker shell by @benvinegar in #1030
- fix(cli): print static reviews without a tty by @benvinegar in #1029
- docs(video): require readable terminal commands by @benvinegar in #976
- fix(git): shorten SHAs in comparison titles by @benvinegar in #1035
- fix(keys): match alt across terminal protocols by @benvinegar in #991
- docs(website): list hunk-compact-filenav in the extension directory by @rschoch in #1034
- feat(ui): animate docked pane transitions by @benvinegar in #941
- fix(session): report daemon health probe failures by @samuela in #927
- feat(review): add multiline comment selections by @benvinegar in #931
- feat(log): review contiguous commit ranges by @benvinegar in #1031
- fix(ui): show info for comparison reviews by @benvinegar in #1032
- refactor(ui): extract diff selection controller by @benvinegar in #1037
- fix(ui): persist themes across routed surfaces by @benvinegar in #1040
- feat: rename the stack diff layout to unified by @saadjs in #945
- feat(history): add configurable command ids by @benvinegar in #1039
- perf(ui): cap pane animations at 30 fps by @benvinegar in #1036
- feat(log): add visual range selection by @benvinegar in #1038
- refactor(ui): normalize session theme startup by @benvinegar in #1041
- perf(ui): restore fast wrapped line rendering by @benvinegar in #1043
- feat(dev): preload fixtures in disposable VM shell by @benvinegar in #1042
- feat(install): add observable release proxy by @benvinegar in #969
- fix(ui): retain view preferences across history reviews by @benvinegar in #1045
- feat(review): make inline notes keyboard selectable by @benvinegar in #1044
- fix(ui): remove duplicate reply range connectors by @benvinegar in #1046
- fix(ui): save note drafts without stale input races by @benvinegar in #1050
- chore(git): internalize tree ref resolver by @benvinegar in #1052
- fix(watch): reload direct files outside repositories by @benvinegar in #1054
- fix(ui): keep wrapped diff interactions responsive by @benvinegar in #1051
- fix(release): support current prerelease metadata by @benvinegar in #1056
- chore(release): prepare v0.22.0-beta.0 by @benvinegar in #1061
Release notes: https://hunk.dev/changelog/0.22/
Full changelog: v0.21.1...v0.22.0-beta.0