{"version":"2.1.247","anchor":"clickable-buttons-in-plugin-ui-built-end-to-end-but-dark-in-","canonical_anchor":"clickable-buttons-in-plugin-ui-built-end-to-end-but-dark-in-","heading":"Clickable buttons in plugin UI, built end to end but dark in this build","tier":"soon","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.247\/e\/clickable-buttons-in-plugin-ui-built-end-to-end-but-dark-in-","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.247","markdown":"### Clickable buttons in plugin UI, built end to end but dark in this build\n\nPlugin buttons work end to end in terminal and desktop, but plugin hook modules are switched off.\n\n**What**\n\nPlugins can define a `Button` element with a key, label and press handler, and pressing it fires a new `ui.press` event back to the plugin. The terminal renders it as a focusable `[ label ]` row reporting `surface: \"terminal\"`, and the desktop app registers the press with `surface: \"desktop\"`. None of it is reachable: it needs plugin hook modules to be loaded, which is gated by `tengu_plugin_hooks_modules`, and the value compiled into this build is false.\n\n**Details**\n\n- The host stamps each drawn button with a plugin and handle address, keeps the press handlers alive, and releases them when a re-render drops the button.\n- `ui.press` is registrable like other plugin events, and the rules table rejects a press answer that names another plugin's button, changes the surface, component or request id, or omits the element.\n- When the gate is off the loader logs `hooks modules not loaded: rollout flag (...)` and skips registration, so absent a server value nothing appears.\n- In 2.1.246 the string `ui.press` did not occur and the JSX tag list had no Button.\n\n**Evidence**\n\n`'JSX element <' + type + '> is not one of Box, Text, Button, div, '`\n\n- Area: Plugins\n- Names: `ui.press`, `tengu_plugin_hooks_modules`\n- Tier: Nothing to try yet\n- Useful: 3\/5\n- Signal: 4\/5\n- Present in the build but not switched on"}