You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Later registrations win for duplicate `value` and for keybind handling.
227
227
- Hidden commands are removed from the command dialog and slash list, but still respond to keybinds and `command.trigger(value)` if `enabled !== false`.
228
+
-`api.command.show()` opens the host command dialog directly.
228
229
229
230
### Routes
230
231
@@ -242,7 +243,8 @@ Command behavior:
242
243
243
244
-`ui.Dialog` is the base dialog wrapper.
244
245
-`ui.DialogAlert`, `ui.DialogConfirm`, `ui.DialogPrompt`, `ui.DialogSelect` are built-in dialog components.
245
-
-`ui.Prompt` renders the same prompt component used by the host app.
246
+
-`ui.Slot` renders host or plugin-defined slots by name from plugin JSX.
247
+
-`ui.Prompt` renders the same prompt component used by the host app and accepts `sessionID`, `workspaceID`, `ref`, and `right` for the prompt meta row's right side.
246
248
-`ui.toast(...)` shows a toast.
247
249
-`ui.dialog` exposes the host dialog stack:
248
250
-`replace(render, onClose?)`
@@ -315,8 +317,12 @@ Current host slot names:
315
317
316
318
-`app`
317
319
-`home_logo`
318
-
-`home_prompt` with props `{ workspace_id? }`
320
+
-`home_prompt` with props `{ workspace_id?, ref? }`
321
+
-`home_prompt_right` with props `{ workspace_id? }`
322
+
-`session_prompt` with props `{ session_id, visible?, disabled?, on_submit?, ref? }`
323
+
-`session_prompt_right` with props `{ session_id }`
319
324
-`home_bottom`
325
+
-`home_footer`
320
326
-`sidebar_title` with props `{ session_id, title, share_url? }`
321
327
-`sidebar_content` with props `{ session_id }`
322
328
-`sidebar_footer` with props `{ session_id }`
@@ -328,8 +334,8 @@ Slot notes:
328
334
-`api.slots.register(plugin)` does not return an unregister function.
329
335
- Returned ids are `pluginId`, `pluginId:1`, `pluginId:2`, and so on.
330
336
- Plugin-provided `id` is not allowed.
331
-
- The current host renders `home_logo`and `home_prompt` with `replace`, `sidebar_title` and `sidebar_footer` with `single_winner`, and `app`, `home_bottom`, and `sidebar_content` with the slot library default mode.
332
-
- Plugins cannot define new slot names in this branch.
337
+
- The current host renders `home_logo`, `home_prompt`, and `session_prompt` with `replace`, `home_footer`, `sidebar_title`, and `sidebar_footer` with `single_winner`, and `app`, `home_prompt_right`, `session_prompt_right`, `home_bottom`, and `sidebar_content` with the slot library default mode.
338
+
- Plugins can define custom slot names in `api.slots.register(...)` and render them from plugin UI with `ui.Slot`.
333
339
334
340
### Plugin control and lifecycle
335
341
@@ -425,5 +431,6 @@ The plugin manager is exposed as a command with title `Plugins` and value `plugi
425
431
## Current in-repo examples
426
432
427
433
- Local smoke plugin: `.opencode/plugins/tui-smoke.tsx`
434
+
- Local vim plugin: `.opencode/plugins/tui-vim.tsx`
428
435
- Local smoke config: `.opencode/tui.json`
429
436
- Local smoke theme: `.opencode/plugins/smoke-theme.json`
0 commit comments