Skip to content

Publish channels ​

Three ways to distribute: the Steam Workshop (Steam client), the web Plugin Hub (self-published edition), and the local extensions directory (manual distribution / beta testing).


1. Steam Workshop ​

ItemValue
Retail AppID5521270
Playtest AppID5227990
Scan sourceFollows the injected SteamAppId at startup; without Steam it defaults to retail
  • Upload through the official Steam Workshop flow (the MOD export shipped with the client is only a packaging convenience).
  • The workshops of the two AppIDs do not share anything — Playtest and retail each need their own upload.
  • The Steam client does not access the web Plugin Hub domain (channel design + Steam compliance requirements).

2. Web Plugin Hub (self-published edition only) ​

Entry: Settings → Extension Workshop → Plugin Hub (PluginHubWindow) → the "Publish" page. The website also has an author center with the same features.

Flow ​

  1. Pick a folder or a plugin package to upload → the server parses and validates mod.json
  2. Fill in the display information + the version number: it defaults to mod.json inside the package, and you can edit it to a higher version to submit a new version (after success it is synced back to your local mod.json)
  3. Submit for review (data type + trusted authors are published automatically; script type is reviewed by a human)
  4. Under "My plugins" you can edit information / unpublish / submit a new version

Constraints ​

ItemLimit
Sign-inYou must sign in to a self-published edition account (workshop token TBW1.…, issued together with the device-code sign-in)
Single package size20 MB (see Packaging & size limit)
Versions pending reviewat most 5 at the same time
Daily submissionscapped (over the cap you get "today's submission limit has been reached")
Version numberx.y.z and must be higher than the highest online version
Adaptation generationmod.json must declare "target_app_version": "0.2"; a package without it is refused by the client (see Compatibility & version gates)
Plugin idthe author segment cannot be a reserved name (transbox/official/builtin/community/example/workshop/steam/system/admin/root/support/web/test/tbmod)

Common error codes ​

Error codeMeaning
not_logged_inthe sign-in expired, sign in again
forbiddenthe token has no upload permission (workshop:publish), sign in once more
id_taken / item_existsthe id is taken / the id already exists online — submit a new version with a new version number
id_mismatchthe id in the package does not match the online item id
bad_packagepackage validation failed (check mod.json and the directory layout)
reserved_ida reserved id segment was used
too_largeover 20 MB
quota_pending / quota_dailytoo many versions pending review / today's submission cap reached

Official plugins do not go through the Plugin Hub ​

Official built-in plugins (community_* / workshop.*) are distributed with the client version and are not published to the web Plugin Hub.


3. Local extensions directory (manual distribution) ​

Users unpack the plugin folder into %APPDATA%/transbox/extensions/ and then refresh in the Extension Workshop. Suited to beta tests, private plugins, and plugins you do not want to make public.

Plugins placed here are marked with the source local, and win when names clash (local > steam > web).

⚠️ The local directory is subject to the same target_app_version gate: a 0.1.x-era plugin dropped here will not show up in the list, and the log says [registry] 拒绝识别外部插件 <id>: 缺少 target_app_version 字段. Add "target_app_version": "0.2" first, then refresh.


Channel comparison ​

Steam WorkshopWeb Plugin HubLocal directory
Who can use itSteam-channel clientSelf-published edition clientEveryone
Upload methodOfficial Steam flowClient publish page / web author centerManual copy
ReviewSteamPlatform review (data type can be automatic)None
Size limitSteam's limits20 MBNone
Auto-updateSteam client sync10 s after client startup + a sync every 24 hManual

TransBox — empowering borderless cross-language communication for everyone