Files
Termix/packages/plugin-sdk
f90621a54e v26.10.6 (#1739)
* feat: let the login page send the token back to the mobile app

* feat: add host-scripts entry to the plugin sdk

* feat: let plugins say how they show in the mobile app

* feat: frame host for running one plugin view outside the shell

* fix: build the SDK host modules in production mode

* chore: note the SDK host build fix in the changelog

* feat: list plugin engine ranges for the mobile app

* feat: host color and icon columns that sync

* chore: update translations and plugin pins

* fix: test

* fix: show source address when rejecting proxy auth

* fix: deleting your own account removes all of its data

* fix(deps): update body-parser to 2.4.0 (#1736)

* fix: body-parser 보안 패치 반영

* chore: 자동 검사를 막던 기존 JSON 서식 정리

---------

Co-authored-by: renovys <180682734+renovys@users.noreply.github.com>

* fix(sdk): decode command output as GBK when it is not valid UTF-8 (#1735)

* fix: honor shared credentials on shared hosts (#1730)

* fix: honor shared credentials on shared hosts and in personal SSH auth

* fix: snapshot shared SSH auth from a credential shared with the host owner

* fix: size DataView list columns by the table's own width (#1713)

* fix: size DataView list columns by the table's own width

The list grid was built from every column, so columns hidden below md/lg
left empty tracks and the visible cells landed under the wrong headers.
Each width now gets a template of only its visible columns (CSS variables
+ container queries on the table, so a narrow panel counts, not the window),
the header uses the same gap as the rows, and rows use a minimum height so
wrapped cells no longer overlap.

* test: wait for the title bar offset effect before asserting

The bar shows once getTitleBarVisible resolves, but --termix-titlebar-height
is set in a later passive effect, so reading it right after findByText raced
(3-5 of 40 runs under load, on main too).

* chore: rerun CI against dev-26.10.6

* fix: unlock passphrase keys once per connect burst (#1737)

* feat: give ssh transports the host origin and sync id (#1717)

* fix: wake other clients after a sync push (Plugin-Sync#1)

* feat: look up local row ids by sync id for the sync plugin (Plugin-Sync#4)

* feat: rail items can show a status dot (Plugin-Sync#5)

* fix: add the desktop shared copy banner text (#1709)

* feat: sidebar preference for alternating rows (#1712)

* fix: striped rows text

* feat: shell can open a saved host's editor for plugins (Plugin-SSH-Terminal#36)

* fix: show the logo in the macos menu bar (#1728)

* fix: number shortcuts skip the home tab (#1724)

* fix: show plugins that could not be downloaded as failed (#1714)

* fix: pass the host id as text when opening its editor

* fix: retry a plugin bundle that was not ready yet (#1708)

* fix: let commonjs plugins fall back to core packages on the desktop

* fix: let non docker installs switch nginx to https (#1711)

* feat: remove a folder share from its hosts too (#1719)

* chore: changelog for merged pull requests

* fix: accept the release .sig when installing a plugin from a file

* feat: folder logins for shared hosts, read only plugin sync, full desktop builds

* fix: test

* fix: stop dev runner restart loops and narrow plugin watchers

* chore: update translations and plugin pins

* chore: lint, format, and bump version to 26.10.6

---------

Co-authored-by: renovys <renovy@gmail.com>
Co-authored-by: renovys <180682734+renovys@users.noreply.github.com>
Co-authored-by: Sebastian Cao <cycsmail@gmail.com>
Co-authored-by: Jonathan Rehuel Lewerissa <jonathan.rehuel16@gmail.com>
Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com>
2026-10-29 17:59:55 -05:00
..
2026-10-29 17:59:55 -05:00
2026-10-29 17:59:55 -05:00
2026-10-29 17:59:55 -05:00
2026-10-29 17:59:55 -05:00
2026-10-01 16:20:16 -05:00
2026-10-10 14:58:27 -05:00
2026-10-29 17:59:55 -05:00
2026-10-29 17:59:55 -05:00
2026-10-01 16:20:16 -05:00
2026-10-20 16:03:29 -05:00
2026-10-29 17:59:55 -05:00

Termix Logo

Termix Plugin SDK

Everything you need to build a Termix plugin


Overview

@termix-ssh/plugin-sdk is what every Termix plugin builds against, including the ones that ship with Termix. It has the types for a plugin's backend and frontend, table definitions, the manifest schema, test helpers, and the termix-plugin CLI. The easiest way to start is the Termix Plugin Template. The full guide is at docs.termix.site/develop.


Installation

npm install --save-dev @termix-ssh/plugin-sdk

CLI

npx termix-plugin build                  # bundle dist/backend.js and dist/frontend.js
npx termix-plugin patch                  # apply the plugin's dependency patches (build does this too)
npx termix-plugin test                   # run the plugin's Vitest suite
npx termix-plugin validate               # check manifest.json and the files it names
npx termix-plugin openapi                # write dist/openapi.json from @openapi comments
npx termix-plugin migrations             # write migrations from the table definitions
npx termix-plugin pack                   # write <id>-<version>.tmxplug
npx termix-plugin changelog              # print this version's notes from CHANGELOG.md
npx termix-plugin sign <file.tmxplug>    # sign it, needs TERMIX_PLUGIN_SIGNING_KEY
npx termix-plugin verify <file.tmxplug> --key <base64>   # check a signature
npx termix-plugin keygen --out <dir>     # make a new signing key pair
npx termix-plugin dev --server <url> --key <tmx_...>   # install on a server and reinstall on every change

dev needs developer mode on (Settings, General) and an API key from an admin account. It installs the plugin from a file, marked unverified, and reinstalls it each time you save. TERMIX_SERVER_URL and TERMIX_API_KEY work in place of the flags. Reload the page to pick up frontend changes.


Support

Bugs and ideas for the SDK or the termix-plugin CLI go in the Termix repo. Add as much detail as you can, in English if possible.

For discussions and questions, join the Discord server.


License

Apache License 2.0. See LICENSE.