What's Changed
- fix(ui): exit when the terminal hosting a review disconnects by @NiqhtFire in #724
- docs: trim redundant agent guidance by @benvinegar in #854
- feat(ui): add Ctrl-D and Ctrl-U scrolling aliases by @benvinegar in #855
- feat(extensions): match file languages by filename or glob by @benvinegar in #851
- refactor(cli): split session command dispatch by @benvinegar in #857
- refactor(ui): unify clipboard line clipping by @benvinegar in #860
- refactor(ui): simplify copy-selection row ranges by @benvinegar in #859
- refactor(ui): isolate theme selector state by @benvinegar in #864
- refactor(ui): isolate view preference quit flow by @benvinegar in #863
- refactor(ui): isolate extension workspace controls by @benvinegar in #862
- fix(ui): keep wrapped code-row geometry aligned by @benvinegar in #858
- refactor(ui): isolate user note composition by @benvinegar in #871
- refactor(ui): extract styled span layout by @benvinegar in #868
- refactor(ui): extract code row layout by @benvinegar in #869
- refactor(ui): consolidate timed notices by @benvinegar in #872
- refactor(ui): extract planned row text projection by @benvinegar in #874
- refactor(ui): isolate current review refresh by @benvinegar in #873
- refactor(ui): extract code cell painting by @benvinegar in #875
- refactor(ui): split mounted diff row views by @benvinegar in #877
- fix(commands): construct complete synthetic key events by @nightcityblade in #774
- Add hunk-git-lite to hunk-extension marketplace by @benvinegar in #883
- Add hunk-mark-as-reviewed to hunk-extension marketplace by @benvinegar in #856
- test: stabilize Windows CI suites by @benvinegar in #885
- refactor(ui): isolate extension trust controller by @benvinegar in #876
- fix(ui): prevent highlight cache identity collisions by @benvinegar in #889
- refactor(ui): commit extension runtime authority by @benvinegar in #891
- fix(session): refuse option-like VCS ranges in session reloads by @benvinegar in #894
- fix(ui): stabilize rapid theme previews by @benvinegar in #893
- Add hunk-file-order to hunk-extension marketplace by @benvinegar in #849
- Themes: Fix washed-out diff accents and invisible word highlighting by @masonmcelvain in #825
- feat(ui): make file and hunk spacing configurable by @Ajay-Satish-01 in #865
- Themes: Harvest bundled diff accents from real VS Code tokens by @masonmcelvain in #828
- feat(session): navigate to comments by id by @Yuki9814 in #845
- docs(session): define broker SDK contract by @benvinegar in #895
- test(pty): observe highlight input responsiveness by @benvinegar in #899
- fix(watch): refuse deadlocking Bun runtimes by @benvinegar in #902
- fix(session): bind broker state to peer ownership by @benvinegar in #898
- refactor(session): canonicalize comment navigation by @benvinegar in #896
- feat(session): add signed broker authorization by @benvinegar in #901
- feat(extensions): add generic CLI commands by @benvinegar in #888
- fix(jj): enable unchanged-context expansion by @samuela in #890
- fix(packaging): avoid mandatory Bun in prebuilt installs by @benvinegar in #908
- feat(extensions): support dim tone in line highlighters (#852) by @benvinegar in #909
- docs(readme): add Discord community badge by @benvinegar in #911
- chore(deps): update Zod to 4.4.3 by @benvinegar in #910
- fix(session): validate broker runtime boundaries by @benvinegar in #903
- chore: update license copyright owner by @benvinegar in #913
- chore(deps): upgrade OpenTUI to 0.5.6 by @benvinegar in #914
- fix(session): bound broker scheduling and transport by @benvinegar in #918
- chore(packaging)!: require Node.js 22 for npm installs by @benvinegar in #917
- feat(website): add tabbed install selector by @benvinegar in #919
- Add hunk-commit to hunk-extension marketplace by @benvinegar in #916
- feat(ui): add adaptive file tree sidebar by @benvinegar in #921
- feat(ui): add responsive pane sizing by @benvinegar in #924
- fix(ui): fill the review stream on first paint by @benvinegar in #922
- feat(review): add threaded inline comments by @benvinegar in #925
- fix(ui): let edge jumps supersede pending reveals by @benvinegar in #928
- feat(cli): add pacman silent install source by @marmitar in #850
- chore(test): upgrade tuistory by @benvinegar in #930
- fix(session): accept native terminal identifiers by @benvinegar in #936
- fix(session): accept dim highlight commands by @benvinegar in #937
- feat(session-broker): authenticate local peers by @benvinegar in #932
- feat(session): migrate incompatible daemons safely by @benvinegar in #933
- test(install-vm): cover authenticated daemon upgrades by @benvinegar in #934
- feat(cli): compare two revisions explicitly by @benvinegar in #938
- feat(extensions): add hunk_viewed and note_changed events by @benvinegar in #939
- feat(extensions): give panes the current line's source address by @benvinegar in #940
- fix(ui): restore review stream responsiveness by @benvinegar in #942
- docs(release): require editorial GitHub notes by @benvinegar in #946
- fix(extensions): prioritize focused pane editors by @benvinegar in #954
- fix(install): refuse conflicting Hunk installs by @benvinegar in #960
- feat(website): publish prerelease changelogs by @benvinegar in #961
- fix(install): deduplicate binary aliases by @benvinegar in #963
- test(session): characterize lifecycle interleavings by @benvinegar in #949
- fix(session): recover from socket startup failures by @benvinegar in #950
- refactor(session): model startup lifecycle states by @benvinegar in #952
- refactor(session): inject a lifecycle clock by @benvinegar in #953
- fix(session): fence late lifecycle settlements by @benvinegar in #955
- test(session): retain runtime exit fixtures by @benvinegar in #956
- feat(extensions): add pane activation callback by @benvinegar in #965
- chore(release): prepare v0.21.0-beta.1 by @benvinegar in #967
- feat(website): add comparison pages for other diff tools by @benvinegar in #968
- chore(release): prepare v0.21.0 by @benvinegar in #972
New Contributors
- @NiqhtFire made their first contribution in #724
- @nightcityblade made their first contribution in #774
- @masonmcelvain made their first contribution in #825
- @Ajay-Satish-01 made their first contribution in #865
- @Yuki9814 made their first contribution in #845
- @samuela made their first contribution in #890
- @marmitar made their first contribution in #850
Full Changelog: v0.20.0...v0.21.0