Skip to content

v0.2.21

Choose a tag to compare

@lassejlv lassejlv released this 15 Jul 12:40

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
(v0.2.20...v0.2.21)