Official external plugin repository for TX-5DR.
- Keep non-builtin plugins out of the main application repository
- Publish an official marketplace catalog from a single source of truth
- Distribute packaged plugin ZIP assets through OSS only
Each published plugin lives in a dedicated top-level directory:
tx-5dr-plugins/
plugin-a/
plugin-b/
.github/
Private shared source packages may live below shared/ without a tx5drPlugin
metadata block; the root scripts ignore them. A plugin only needs to keep
its own source, metadata, build script, and packaging logic inside its folder.
Each plugin directory is self-contained. CI scans top-level directories and
treats only directories containing a tx5drPlugin metadata block as published
plugins.
Each plugin must expose a uniform contract to CI:
scripts.build: prepares all build outputs needed for release packagingtx5drPlugin.pluginName: runtime plugin directory nametx5drPlugin.entry: built entry module path used for validationtx5drPlugin.include: files or directories copied into the released ZIPtx5drPlugin.minPluginApiVersion: oldest bundled@tx5dr/plugin-apiversion that supports the plugin; it is unrelated to the TX-5DR nightly product version
package-lock.json is optional. If present, CI uses npm ci; otherwise it
falls back to npm install.
Example:
{
"scripts": {
"build": "tsc"
},
"tx5drPlugin": {
"pluginName": "example-plugin",
"title": "Example Plugin",
"description": "Example description",
"minPluginApiVersion": "1.0.0",
"entry": "dist/index.js",
"include": [
{ "from": "dist/index.js", "to": "index.js" },
{ "from": "src/locales", "to": "locales" }
]
}
}This keeps plugin-specific build logic inside the plugin while letting CI use a single packaging and publishing path. Adding a new plugin does not require editing any root package manifest.
nightly: built automatically frommainstable: promoted after review
- Marketplace catalog JSON and ZIP assets are uploaded to OSS
- Distribution base URL:
https://dl.tx5dr.com/plugins/market - GitHub Releases are not used for plugin distribution
- TX-5DR clients read the official marketplace catalog from a fixed URL
Repository scaffold with migrated demo plugins and the external FT contest family:
heartbeat-demoiframe-panel-demoqso-session-inspector- 13 standard FT8/FT4 contest plugins
ww-digi
Root tooling is just plain Node scripts under scripts/:
node scripts/validate-marketplace.mjsnode scripts/build-plugins.mjsnode scripts/package-market.mjs --channel nightly
The contest packages are developed against the Host worktree without copying
their source into the Host repository. Set TX5DR_HOST_ROOT to the exact Host
worktree that is under test; the local build then links the public API and build
tools from that worktree and skips npm installation:
TX5DR_HOST_ROOT=/Users/fangyizhou/Documents/coding/tx-5dr-ft8-contest-family-plugins \
node scripts/build-plugins.mjsTo make the Host discover those built artifacts, create ignored development links in the Host worktree:
TX5DR_PLUGINS_ROOT=/Users/fangyizhou/Documents/coding/tx-5dr-plugins \
node /Users/fangyizhou/Documents/coding/tx-5dr-ft8-contest-family-plugins/scripts/link-marketplace-plugins.mjsRun the Host with TX5DR_PLUGINS_DIR pointing at
<host-worktree>/.dev/plugins, then rescan plugins. The links point to each
plugin's dist directory and are never included in Git or release artifacts.