v1.7.0
Thank you 🙏
v1.7.0 is here, and a big part of it came from the community.
Thank you to everyone who tried TTT, filed reports, and sent patches this cycle.
Highlights
- TextMate syntax highlighting (#675). Highlighting moves to textmate-go, a Go port of VS Code's TextMate engine with 124 embedded grammars, so colors match what you see in VS Code. Themes get finer token styles, and edits only re-tokenize what changed (#687, #707).
- Bring your own grammars (#702). Load extra TextMate grammars from plugins or the
editor.grammarssetting. The first grammar plugins,lang-git,lang-astroandlang-just, are in ttt-plugins. - Bookmarks and plugin storage (#462, #733, #734). Plugins can now draw gutter bookmarks (
ttt.bookmarks), react to clicks left of the line number (gutter.click), and keep their own persistent data (ttt.storage). The new Bookmarks plugin uses all three: click the gutter or right-click a line to bookmark it, and browse them in a sidebar panel. - Welcome page: recent folders and Clone Repository (#685, #682). The welcome page lists recently opened folders (turn it off with
welcome.recentFolders, #694) and Clone Repository (also in the command palette) clones a git repository and opens it. - Settings editor grouped by area (#661). Settings are organized into sections with headings instead of one long list.
- Read-only files (#698, #701). Files without write permission are flagged, show a lock icon on their tab, and ask for confirmation before saving.
- LSP controls (#737, #736).
LSP: Server Restartrestarts a stuck language server and reopens its files, and Options → LSP Hover turns mouse hover popups on or off.
Also in this release
- The panel size is remembered between sessions, and dividers show a resize pointer (#679, #618).
- Pinned tabs show a Nerd Font pin glyph (#727).
- Drag-selecting past the top or bottom edge keeps scrolling (#699).
- Diffs use linear memory, and stale git gutter diffs are cancelled (#673).
- The Current Changes view no longer gets stuck refreshing (#689).
- Transparent terminal backgrounds are preserved (#681), split panel borders join cleanly (#677), and the sidebar restores its closed state and a usable width on launch (#678).
- The integrated terminal moves to the maintained xterm-go fork (#709).
- New registry plugins:
lsp-ruff,formatter-ruff(#696) andlsp-haskell(#690). - Homebrew installs now include the
brew truststep (#691, #692). - The docs site publishes
llms.txtfor coding agents (#739). - Editor benchmarks for each language run in CI (#712).
Contributors & Acknowledgments
Thank you to everyone who tried TTT, filed reports, and sent patches this cycle.
- @SimonOcampo1 built the grouped settings editor (#661), recent folders (#685) and Clone Repository (#682) on the welcome page, and the divider resize pointer (#618).
- @anyingiit added read-only file detection with a save confirmation (#698).
- @risixdzn made diffs linear-space and cancelled stale gutter diffs (#673).
- @YodHeVauHe added the read-only lock icon on tabs (#701).
- @LetMeSleep8h added the pin glyph for pinned tabs (#727).
- @RhenCloud contributed the Ruff LSP and formatter plugins (#696).
- @DBinK added the Homebrew
brew truststep (#691). - @w3lld1 isolated a flaky terminal test from saved layout state (#703).
- @O1sumitkumar fixed the
welcome.recentFoldersdocs (#731).
New Contributors
- @anyingiit made their first contribution in #698
- @YodHeVauHe made their first contribution in #701
- @LetMeSleep8h made their first contribution in #727
- @RhenCloud made their first contribution in #696
- @w3lld1 made their first contribution in #703
- @O1sumitkumar made their first contribution in #731
More
What's Changed (41 pull requests)
- docs(readme): acknowledge 1.5 and 1.6 contributors by @eugenioenko in #667
- docs(settings): describe layout settings as defaults overridden by state.json by @eugenioenko in #668
- fix(diff): use linear-space LCS and cancel stale git gutter diffs by @risixdzn in #673
- feat(panel): show a resize pointer over the divider by @SimonOcampo1 in #618
- fix(sidebar): restore closed state and a usable width on launch by @eugenioenko in #678
- feat(highlight): highlight with textmate-go and finer theme styles by @eugenioenko in #675
- chore: update vendorHash by @github-actions in #680
- feat(panel): persist the panel size and fix the divider drag without a terminal by @eugenioenko in #679
- fix(theme): preserve transparent terminal backgrounds by @eugenioenko in #681
- feat(git): Clone Repository from the welcome page and the palette by @SimonOcampo1 in #682
- fix(highlight): increase tokenization time budget by @eugenioenko in #687
- feat(workspace): list recently opened folders on the welcome page by @SimonOcampo1 in #685
- fix(git): stop Current Changes refresh livelock by @eugenioenko in #689
- feat(plugins): add lsp-haskell to the community registry by @eugenioenko in #690
- Add trust command for Homebrew installation by @DBinK in #691
- docs(install): add brew trust step to the installation page by @eugenioenko in #692
- fix(ui): compose split panel border junctions by @eugenioenko in #677
- feat(welcome): allow disabling recent folder history by @eugenioenko in #694
- feat(registry): list lsp-ruff and formatter-ruff plugins by @RhenCloud in #696
- fix(editor): keep vertical scrolling during drag selection by @eugenioenko in #699
- feat(editor): flag read-only files and confirm before saving them by @anyingiit in #698
- feat(tabs): show a lock icon for read-only tabs when Nerd Font icons are enabled by @YodHeVauHe in #701
- feat(highlight): load external TextMate grammars from plugins and settings by @eugenioenko in #702
- test(app): isolate terminal right-click test from persisted layout by @w3lld1 in #703
- docs: tighten contributor and agent guides by @eugenioenko in #704
- chore(highlight): bump textmate-go to v0.2.0 by @eugenioenko in #707
- chore: update vendorHash by @github-actions in #708
- chore(terminal): switch to the maintained xterm-go fork by @eugenioenko in #709
- chore: update vendorHash by @github-actions in #710
- test(perf): add editor benchmarks per language and run them in CI by @eugenioenko in #712
- test(chaos): report hung iterations instead of stalling the run by @eugenioenko in #719
- ci: read the Node version from .nvmrc by @eugenioenko in #720
- Show the Nerd Font pin glyph for pinned editor tabs by @LetMeSleep8h in #727
- feat(settings): group the settings editor by area with section headings by @SimonOcampo1 in #661
- docs(settings): point welcome.recentFolders to Settings > General by @O1sumitkumar in #731
- feat: add gutter bookmarks core and ttt.bookmarks plugin API by @eugenioenko in #462
- feat(plugin): add ttt.storage for per-plugin persistent state by @eugenioenko in #733
- feat(bookmarks): add gutter.click event for plugin bookmark toggling by @eugenioenko in #734
- feat(options): add LSP Hover toggle by @eugenioenko in #736
- feat(lsp): add LSP: Server Restart command by @eugenioenko in #737
- docs: add llms.txt for agent discovery by @eugenioenko in #739
Full Changelog: v1.6.0...v1.7.0