Plugin UI components like Button, Input and Select now run in a sandboxed renderer that safely reattaches event handlers
Plugins that render their own UI (using components like Button, Input and Select) now go through a new sandboxed renderer. When a plugin's UI tree is built, its event handlers (like onPress on a Button, or onInput/onSubmit on an Input) get frozen and passed across a sandbox boundary, then safely reattached ("rewired") afterward so they still work.
Alongside this, the underlying system that lets plugins chain together hooks (functions that run in response to events, using an on(event).catch() style registration) was reworked. Each hook now has a call-count limit, and once a hook is called too many times it is throttled, with a one-time warning logged.
This lets plugin-authored UI safely run in a restricted sandbox without losing the ability to respond to clicks, typing, and submissions, while the call-count throttling guards against a misbehaving hook being invoked in a runaway loop.