Skip to content

Host implementation status ​

The confirmed list of exposed capabilities — do not guess hooks that do not exist, and do not rely on slots nobody consumes. This list is based on HostProtocol in src/transbox/plugins/base.py and the individual bridge Mixins.


Host SPI ​

  • [x] Captions: feed_direct_caption / feed_caption / the lightweight caption path / drop_noise / on-demand tts
  • [x] Translation facade: translate / translate_batch (including glossary_context)
  • [x] Hotkeys: mod.json.hotkeys declaration + main-thread registration + asynchronous action dispatch
  • [x] Config: get_plugin_config / set_plugin_config_value / save_plugin_config (including the pluginConfigChanged broadcast)
  • [x] Private data: data directory + KV read/write/delete
  • [x] Session: get_recent_conversation / get_history_as_text
  • [x] State: get_pipeline_state / get_active_provider / list_installed_plugins / plugin_dir / has_plugin / runtime_dir / has_runtime / get_app_version / get_locale / log
  • [x] Models: list_model_artifacts / inspect_model_artifact / download_model_artifact
  • [x] Events: handle_host_event + subscribe_event / unsubscribe_event / unsubscribe_all_events
  • [x] Speech: speak / stop_speak / is_speaking
  • [x] Feedback: show_toast / show_error / set_window_excluded_from_capture / Copilot window control
  • [x] Overlay windows: create_plugin_window and friends (multiple instances / positioning / click-through / capture protection)
  • [x] Files: pick_file / pick_files / pick_folder / pick_save_file
  • [x] Progress: begin_progress / update_progress / end_progress / cancel_progress / is_progress_cancelled / get_progress + the pluginProgress signal
  • [x] HostProtocol type annotations (the complete set)

Types & lifecycle ​

  • [x] First-class support for type: tool and its workshop category (pipeline tools)
  • [x] settings_view does not take part in UI slot mutual exclusion
  • [x] target_app_version hard check (since 0.2: an external/hub plugin that omits it is refused at scan, at instance creation and at hub install)
  • [x] The min_app_version runtime gate (1.0.0 = no restriction)
  • [x] Dual-track routing + instance reuse + supports_concurrent_streams

Engine capabilities ​

  • [x] MT target-language capability: mod.json.target_langs → caption "translate to" dropdown (Chinese/English by default + user-activated languages; filtered per model)
  • [x] Read-only capability probe PluginRegistry.plugin_capabilities() (does not create an instance / does not start a service) + mod.json.capabilities
  • [x] Lazy-load gate: read-only paths (settings-page status / voices / model card) do not create instances; an external plugin's asynchronous initialize can be awaited until it settles
  • [x] TTS voice SPI: list_voices / register_voice / remove_voice + the settings-page "Register cloned voice" (including in-app reference-audio recording of 1~30s, saved to <data dir>/voice_samples/)
  • [x] Host-wide speed stretching (when a plugin does not declare supports_speed)
  • [x] The check_ready() readiness gate + the requires_runtime / requires_plugins dependency gates

Distribution ​

  • [x] Local extensions/ + %APPDATA%/transbox/extensions/ scanning
  • [x] Steam Workshop (AppID 5521270 / Playtest 5227990)
  • [x] Web Plugin Hub (self-published builds only): browse / subscribe / download and install / update check / revocation / author upload
  • [x] Host runtimes: requires_runtime + host.runtime_dir() / host.has_runtime() (llama_runtime / whisper_runtime / audiocpp_runtime / tts_server_runtime are all bundled with the installer, extracted under data/local-runtime/runtimes/<name>/; nv_pack_cu13 is the NVIDIA-only acceleration pack and uses a separate download channel)
  • [x] The same target_app_version gate for the Web Hub / Steam Workshop / hand-placed plugins (old 0.1 packages cannot install themselves)

Things that explicitly do not exist (don't look for them) ​

Does not existNotes
A Loader for the overlay_root / style_bar slotsDeclaring them has no effect; do not rely on them
A file picker control for config_schemaThe type is reserved but rendered as a text box; ship your own settings_view or use host.pick_file()
A low-level API for plugins to register hotkeys themselvesYou must go through the host API (calling ctypes.RegisterHotKey yourself fails silently)
Runtime pip installStrictly forbidden; use libs/ / vendor/ or an external process
Sandbox / permission isolationNo sandbox; plugins have the same privileges as the main application

TransBox — empowering borderless cross-language communication for everyone