Files
Termix/packages/plugin-sdk/CHANGELOG.md
T

8.2 KiB

Changelog

1.0.14

Plugin API 1.6.0.

Added

  • ctx.hosts.locks.provide and the hosts:lock capability, so a plugin can manage hosts that stay read only for everyone else and block adding hosts by hand
  • ctx.hosts.setShares to replace every grant on a host in one call
  • ctx.credentials.list returns the acting user's credentials by name, without secrets
  • ctx.hosts.create and update take password, key, keyPassword, keyType, sudoPassword, protocolAuth and pluginEnable

1.0.13

Plugin API 1.5.0.

Added

  • runtime: "desktop" in the manifest for a plugin that only loads on the desktop app
  • desktop:local and ctx.desktop.local: file system, local shell and machine info on the desktop app's own backend
  • ctx.audit.subscribe, ctx.audit.list and ctx.audit.exportBatches under audit:read
  • ctx.hosts.importMany, importSshConfig, exportMany and registerImportNormalizer, with the hosts:export capability
  • ctx.credentials.publicKey and resolveKeyRefs, ctx.ssh.exec, and @termix-ssh/plugin-sdk/ssh-keys
  • ctx.hosts.status.provide and ctx.hosts.activity.provide so a plugin can own host status and recent activity, with ctx.network.tcpProbe, ctx.ssh.probe, ctx.hosts.probeTargets and ctx.hosts.sessionActive
  • registerHostStatusIndicator and registerHostEditorToolbarItem, and order for host badges
  • Onboarding steps can sit in a start section, take a position and replaces a core step
  • A plugin can provide the app name, tagline and logo through the <id>.brandingProvider registry key

1.0.12

Plugin API 1.4.0.

Added

  • contributes.layouts and app.registerLayout() for a whole-app layout, with the ui:layout capability. Needs engine.api 1.4
  • contributes.themes for CSS-only themes, with the ui:theme capability. termix-plugin validate checks theme CSS and pack ships it
  • useShell() gives a layout the live shell: tabs, splits, hosts, docks, the command palette and the registries. The shell's home tab is left out until some plugin registers a dashboard tab type
  • TabStage and ShellConfirmCapture in @termix-ssh/plugin-sdk/ui, for a layout to place tabs
  • validateThemeCss() in @termix-ssh/plugin-sdk/manifest
  • @termix-ssh/plugin-sdk/ui also exports what a whole layout is built from: the API client, shared types, hooks, useShellController() and APP_VERSION. These reach into core, so they can change with a core release
  • @termix-ssh/plugin-sdk/testing-host exports the registries and permission seam a layout's own tests fill directly
  • A plugin that only holds themes needs no source: termix-plugin build writes an empty backend and validate does not ask for a frontend
  • termix-plugin validate flags ui:layout or ui:theme with nothing contributed, and a layout plugin with no frontend

Fixed

  • The manifest JSON schema lists the notify:hub and plugins:read capabilities
  • Plugin tests and type checks work with the SDK linked from a local Termix checkout

1.0.11

Plugin API 1.3.0.

Added

  • ctx.auth.issueUserToken() mints a short-lived session for a user, for calling Termix's own API as them from background work. Needs users:impersonate and engine.api 1.3
  • ctx.users.getLocale() reads a user's UI language. Needs users:read and engine.api 1.3

1.0.10

Changed

  • termix-plugin pack includes the plugin's LICENSE and NOTICE files, so third-party notices ship with it

1.0.9

Added

  • Worker entries in package.json termix.workers, each bundled on its own into dist/workers/<name>.js
  • A .wasm, .ttf or .otf import gives the file's bytes, in termix-plugin build and in plugin tests

Fixed

  • The plugin guide listed jszip, guacamole-lite and @anthropic-ai/sdk as shared packages, but they are bundled

1.0.8

Added

  • publicRateLimit on ctx.http.router(), for a plugin whose public routes serve a proxied page

1.0.7

Fixed

  • A migration file, or a part of one, holding only comments made core fail to start the plugin

1.0.6

Added

  • PLUGIN-GUIDE.md, a guide to building, testing and releasing a plugin, written so AI coding tools can read it too

1.0.5

Fixed

  • execCommand timeout errors no longer include the command, which could hold a sudo password
  • termix-plugin validate fails when a plugin ships migrations for some database engines but not all three
  • termix-plugin migrations loads the table definitions from a path with a # or other URL characters in it
  • Text, json and encrypted columns are longtext on MySQL in new migrations, so they are no longer capped at 64KB. Existing migrations keep text
  • i18next, react-dom, react-i18next and sonner are optional peer dependencies, so npm stops installing them into backend-only plugins
  • termix-plugin validate accepts a beta version like 1.1.0-beta.1 when the changelog's newest release is 1.1.0 or older, so beta releases pass

1.0.4

Fixed

  • termix-plugin build puts a plugin's own Tailwind classes in core's utilities layer, so responsive, hover and group variants and className overrides on SDK components work. Plain classes core already ships stay below core's utilities as before, while variants core ships go with the plugin's own so max-h-56 md:max-h-none keeps its order. Rebuild a plugin to pick it up

1.0.3

Plugin API 1.2.0.

Added

  • docs manifest field: an https link to the plugin's docs. Termix shows it as a Documentation link on the plugin's page and in its settings
  • env manifest field: the environment variables the plugin reads, listed in its docs and on its page
  • app.docs and useDocsUrl() for links into the plugin's own docs, and DocsLink in @termix-ssh/plugin-sdk/ui
  • PanelShell takes a docs link and shows it as a book icon in the header
  • @termix-ssh/plugin-sdk/openapi with buildOpenApi(), and termix-plugin openapi, which writes dist/openapi.json from the @openapi blocks in src/backend. build runs it too
  • @termix-ssh/plugin-sdk/docs with pluginDocsUrl(), pluginDocsPage() and pluginEnvVars()
  • termix-plugin validate warns when docs/index.md is missing or the source reads an env var the manifest does not list

1.0.2

Added

  • features manifest field: up to 20 short lines about what the plugin does, shown on its page. pluginFeatures() reads them

Changed

  • parseChangelog() and validateChangelog() flag a ## Unreleased section. Notes go under the version they ship in

Removed

  • Changelog.unreleased

1.0.1

Added

  • Plugin API 1.1
  • app.registerOnboardingStep() adds a step to onboarding, with OnboardingStepProps and OnboardingStepContribution. Needs engine.api 1.1
  • video manifest field: a YouTube link shown at the top of the plugin's page, read with youtubeVideoId()
  • @termix-ssh/plugin-sdk/changelog parses and checks a plugin's CHANGELOG.md
  • termix-plugin changelog prints one version's notes from CHANGELOG.md
  • termix-plugin dev installs a plugin on a running server and reinstalls it on every change. Needs developer mode and an admin API key
  • renderOnboardingStep() and registered.onboardingSteps() in renderWithApp()
  • AddButton, FormFooter, ListRow, ListRowAction, ListRowFolder, ListBadge and PanelList in @termix-ssh/plugin-sdk/ui
  • PanelSearch takes disabled, title, onEnter and inputRef, and SurfaceScope takes onClose

Changed

  • Release notes moved from CHANGELOG.json to CHANGELOG.md, which pack now ships. validate flags a leftover CHANGELOG.json
  • ConnectionScreen dropped errorMessage and retryLabel and gained onClose. ConnectionLogPanel dropped position
  • Plugin tests run in worker threads, since forked workers crash now and then on Windows
  • The test setup stubs ResizeObserver for Radix controls under jsdom
  • onboarding is a reserved plugin id

Deprecated

  • The onboarding.* action slots. Use registerOnboardingStep()

Removed

  • schema/changelog.schema.json

1.0.0

Added

  • Backend, frontend, database, manifest, capability and settings types for plugin API 1.0
  • Testing helpers and a Vitest preset for plugin tests
  • The @termix-ssh/plugin-sdk/ui component set
  • The termix-plugin CLI to build, validate, test, pack, sign and write migrations