Skip to main content

Kinds

kind tells Timon what a plugin is; slots tell it where that plugin inserts components. These must agree.

KindSurface
widgetAt least one slot ending in .widget
pagepage, with a declared route
overlayExact overlay slot, inside the app window
themeSingle theme slot
composerSingle chat.composer slot
layoutSingle root slot
behaviorEffects or settings without a required visual kind
bundleInstalls contains; no browser half

A string is shorthand for a one-element list. A plugin can declare ['widget', 'overlay'] and register both surfaces in the same apply. They remain one identity. plugin-hello likewise registers navigation and a widget without becoming a bundle.

A bundle is exclusive: it cannot combine bundle with another kind or include a browser half. Only bundles may declare nonempty contains. Each child keeps its own identity and independent toggle.

A missing kind is inferred from recognised slots. A plugin with no recognised visual kind becomes behavior; there is no separate settings kind. Declare settings fields or exact settings slots instead.