v0.2.21
Termy v0.2.21
This release turns Plugins into a proper extension platform. Plugins can now render safe native interfaces, store data, expose settings, and react to terminal events. Terminal rendering also received a healthy performance diet.
Plugins
-
Build native tools using TSX and Termy’s allowlisted UI components.
-
Plugin interfaces are validated and rendered safely through GPUI—no React, HTML, or direct renderer access.
-
Added buttons, checkboxes, text inputs, layouts, dividers, and semantic styling.
-
Added persistent JSON storage and plugin-specific data/cache directories.
-
Added typed plugin settings, including toggles, text, secrets, and selects.
-
Added lifecycle events for terminal readiness, tab changes, working-directory changes, and completed commands.
-
Added plugin commands to Termy’s keybinding system.
-
Added a complete Todo plugin example.
-
Added automatic bundling, content hashing, Worker reloads, and cached builds.
-
Added plugin management through Settings → Plugins.
-
Expanded the CLI with init, add, dev, update, status, enable, disable, and uninstall.
Plugin capabilities
Plugins must explicitly declare the Termy APIs they use:
{ "$schema": "https://termy.sh/schemas/plugin.schema.json", "apiVersion": 1, "id": "todos", "name": "Todos", "capabilities": ["storage", "native-ui"] }
- storage enables persistent storage and plugin data paths.
- native-ui enables native views and view.open.
- Added a public JSON Schema for validation and editor autocomplete.
Capabilities gate Termy APIs, but plugins remain trusted local Bun code with normal system access.
Performance
- Terminal wakeups are now event-driven and coalesced per terminal.
- Only terminals with pending events are processed.
- Damaged render rows are updated in batches with fewer allocations and clones.
- Search results share line data instead of duplicating strings.
- Redundant resize damage and redraw work has been reduced.
- Performance benchmarks now enforce CPU, memory, frame, hitch, and idle-wakeup measurements more strictly.
Fixed
- Fixed right-click handling in mouse-aware terminal applications.
- Fixed toast ID collisions that could dismiss the wrong plugin toast.
- Fixed native plugin dialogs leaking input and shortcuts into the terminal.
- Native plugin views can now be closed using the X button or Escape.
- Improved plugin failure handling and Worker recovery.
- Fixed production TLS initialization for the API.
- Fixed the API Docker image’s glibc compatibility.
Documentation and website
-
Renamed “TypeScript Plugins” to simply Plugins.
-
Reorganized plugin documentation into dedicated sidebar pages.
-
Added guides for native UI, commands, context, lifecycle events, storage, security, and runtime limits.
-
Published the plugin manifest schema.
-
Reduced homepage animation cost and optimized image assets.
-
Improved static asset serving and release-page rendering.
Full changelog: v0.2.20...v0.2.21 (https://github.com/lassejlv/termy/compare/v0.2.20...v0.2.21)