Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.247 ·

Clickable buttons in plugin UI, built end to end but dark in this build

Plugin buttons work end to end in terminal and desktop, but plugin hook modules are switched off.

Nothing to try yet Notable No documentation found In Development
JSON All of v2.1.247
Nothing to try yetTier: how much it should matter to you
3Useful: my rating, 1 to 5
4Signal: worth watching, 1 to 5
PluginsArea: what it touches
In DevelopmentKind: in v2.1.247,
What probably matters to youSection of the release

Button elements and ui.press are complete across terminal and desktop but need tengu_plugin_hooks_modules, compiled false.

What

Plugins 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.

Details
  • 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.
  • 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.
  • When the gate is off the loader logs hooks modules not loaded: rollout flag (...) and skips registration, so absent a server value nothing appears.
  • In 2.1.246 the string ui.press did not occur and the JSX tag list had no Button.
Evidence

'JSX element <' + type + '> is not one of Box, Text, Button, div, '

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Read from
What has happened since
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.

See this across every release →

See this entry in the whole of v2.1.247 →

Feedback