·
3 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
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, andccomments exactly where you are looking. - Richer agent context. Experimental STML notes provide structured, terminal-native explanations with preview and layout tools.
- Full reviews from pipelines. Piped diffs retain navigation, filtering, layouts, sidebars, and other review controls.
- A UI that follows your preferences. Remapped shortcuts appear correctly, view settings can be saved, and tabs and syntax colors are configurable.
- Faster and more dependable reviews. Watch mode uses less CPU, navigation retains less memory, wrapped Unicode is faster, and CJK and emoji filenames render correctly.
All 83 merged pull requests
- docs: update Homebrew release guidance by @benvinegar in #515
- fix(config): read Windows user-profile config by @benvinegar in #533
- feat: STML terminal markup for agent comments — guide, preview, live-width feedback by @benvinegar in #512
- fix: upgrade OpenTUI for renderer stability by @benvinegar in #538
- fix: reduce retained geometry memory in large reviews by @matthew-hre in #521
- feat(ui): prompt to save view preferences on quit by @benvinegar in #468
- feat(watch): replace 250 ms watch polling with evented filesystem observation by @elucid in #531
- chore(benchmarks): backfill 0.17.1 release snapshot by @benvinegar in #547
- fix(ui): copy selection misaligns on wide (CJK) characters by @endotakuya in #548
- fix(cli): reject partially numeric line and hunk values by @fallintoplace in #535
- fix(ui): wrap agent note text by terminal cells by @kataokatsuki in #567
- fix(pager): extend row backgrounds to host edge by @benvinegar in #571
- fix(session): refresh daemons for STML payloads by @benvinegar in #572
- docs(markup): clarify native note composition by @benvinegar in #573
- feat(theme): support raw Shiki syntax scopes by @benvinegar in #570
- fix(theme): surface legacy syntax translation by @benvinegar in #574
- fix(review): save draft notes exactly once under rapid Ctrl+S by @endotakuya in #581
- fix(ui): distinguish root files in sidebar by @BowlOfSoup in #519
- fix(ui): restore threaded rendering on macOS by @benvinegar in #539
- feat: make diff tab width configurable by @benvinegar in #588
- feat(stml): require experimental opt-in by @benvinegar in #589
- fix(cli): lazy-load OpenTUI for headless commands by @benvinegar in #590
- perf(ui): optimize terminal cell width measurement (#579) by @kazu728 in #586
- feat(skill): generate the hunk-review skill from a typed agent surface by @benvinegar in #596
- fix(update): show Nix-aware upgrade guidance by @benvinegar in #598
- perf(ui): optimize wrapped Unicode rendering by @benvinegar in #601
- docs(website): add Starlight documentation site by @benvinegar in #603
- feat(website): unify marketing and docs by @benvinegar in #604
- feat(extensions): experimental TypeScript extension system (phase 1) by @benvinegar in #599
- feat(website): unify marketing and docs design by @benvinegar in #605
- feat(extensions): folder extensions with package.json manifests by @benvinegar in #606
- Extensions can replace the sidebar with custom React components by @benvinegar in #609
- feat(website): add community videos and an agent-review section to the landing page by @benvinegar in #610
- feat(extensions): keyboard commands and additive multi-sidebar views by @benvinegar in #611
- feat(ui): drive menus and help from the command table, and add an Extensions menu by @benvinegar in #614
- fix(session): support IPv6 loopback broker URLs by @benvinegar in #613
- feat(extensions): give command handlers the review selection by @benvinegar in #616
- fix(website): track documentation visits by @benvinegar in #620
- feat(extensions): dialog primitives for command handlers by @benvinegar in #617
- feat(extensions): inject resolved sidebar keybindings by @benvinegar in #615
- docs: extract theme configuration guide by @benvinegar in #622
- feat(extensions): expand event surface by @benvinegar in #619
- fix(nix): keep flake evaluable on nixpkgs without x86_64-darwin by @elucid in #621
- fix(website): upgrade Astro security dependencies by @benvinegar in #623
- Support .tsx and .jsx extension entries in discovery by @benvinegar in #625
- refactor(architecture): establish application boundaries by @benvinegar in #624
- feat(extensions): expose public hunk summaries on file views by @benvinegar in #626
- fix(deps): upgrade shell-quote security patch by @benvinegar in #627
- docs(extensions): commit the scrollbox ref contract for custom sidebars by @benvinegar in #630
- feat(extensions): give command handlers guarded review navigation by @benvinegar in #629
- refactor(session): consolidate internal session modules by @benvinegar in #628
- docs(website): add a self-contained Extend section to the docs site by @benvinegar in #631
- Restyle community video cards as paused YouTube embeds by @benvinegar in #641
- docs(website): add keybindings guide to the docs site by @benvinegar in #634
- feat(website): center and widen the docs shell on wide viewports by @benvinegar in #642
- feat(website): rebuild the landing page feature section around real TUI captures by @benvinegar in #643
- feat(extensions): add custom file previews by @benvinegar in #632
- docs(extensions): document custom file previews by @benvinegar in #644
- fix(ui): step keys scrolling multiple lines after a review-stream click by @HackAttack in #645
- feat(pager): give pager mode the full review controls by @HackAttack in #647
- ci(release): switch npm publishing to trusted publishing (OIDC) by @benvinegar in #640
- fix(ui): route keys by ownership so modal surfaces stop double-handling them by @elucid in #649
- refactor(ui): isolate extension dialog lifecycle by @benvinegar in #651
- ci(release): verify generated prerelease notes by @benvinegar in #654
- perf(ui): skip inactive file-view preparation by @benvinegar in #652
- fix(ui): keep file navigation from losing the file it just jumped to by @elucid in #655
- chore(release): prepare 0.18.0-beta.0 by @benvinegar in #653
- chore(release): link changelog pull requests by @benvinegar in #657
- chore(release): finalize 0.18.0-beta.0 metadata by @benvinegar in #660
- fix(release): include provenance in platform packages by @benvinegar in #661
- chore(deps): bump the github-actions group with 4 updates by @dependabot[bot] in #659
- fix(ui): preserve file headers on narrow terminals by @benvinegar in #668
- test(git): isolate fixture repos from the developer's Git config by @HackAttack in #679
- fix(git): display quoted Unicode paths by @benvinegar in #670
- fix(ui): preserve syntax state across folded hunks by @benvinegar in #669
- refactor(ui): isolate file presentation state by @benvinegar in #656
- feat(review): mark the current line and anchor notes to it by @loganthomas in #662
- feat(extensions): let file views refresh their prepared layouts by @benvinegar in #673
- feat(extensions): add host-mediated workspace document reads and writes by @benvinegar in #674
- feat(extensions): add interactive file-view modes by @benvinegar in #675
- feat(ui): show changed-file count in menu bar by @benvinegar in #684
- fix(ui): bound current-line navigation costs by @benvinegar in #685
- chore(release): prepare 0.18.0 by @benvinegar in #687
New Contributors
- @matthew-hre made their first contribution in #521
- @endotakuya made their first contribution in #548
- @fallintoplace made their first contribution in #535
- @kataokatsuki made their first contribution in #567
- @BowlOfSoup made their first contribution in #519
- @kazu728 made their first contribution in #586
- @HackAttack made their first contribution in #645
- @loganthomas made their first contribution in #662
Full Changelog: v0.17.7...v0.18.0