Skip to content

fix: degradar slots cuando el host no expone el renderer - #33

Merged
j0k3r-dev-rgl merged 3 commits into
ricardo-rod:mainfrom
patricio0312rev:fix/prevent-tui-crash-on-renderer-mismatch
May 14, 2026
Merged

j0k3r-dev-rgl merged 3 commits into
ricardo-rod:mainfrom
patricio0312rev:fix/prevent-tui-crash-on-renderer-mismatch

Conversation

@patricio0312rev

@patricio0312rev patricio0312rev commented May 14, 2026 •

Copy link
Copy Markdown
Contributor

fix: degradar slots cuando el host no expone el renderer

🔥 Qué cambia:

Con opencode 1.14.50, los slots home_bottom y sidebar_content tiran Error: No renderer found en el primer render y eso crashea la TUI entera con el overlay de fatal error.

Cambios:

  • safeSlotRender(label, render) envuelve el render del slot. Si cae Error("No renderer found") devuelve null (el slot queda inactivo) y se loguea un warning una sola vez con un mensaje accionable. Cualquier otro error se re-lanza tal cual.
  • getHostVersion(api) y un log.info con la versión del host al iniciar, para que los reportes traigan ese dato sin pedirlo.

Comandos (:sdd-model), keybindings y persistencia siguen funcionando. Se pierde solo el badge visual hasta que se restablezca la compatibilidad.

🔧 Alcance:

Es un fix defensivo, no la causa raíz. El throw viene de tener dos instancias de @opentui/solid en memoria (la del host y la que resuelve el loader del plugin), entonces el RendererContext del host no es visible para el useContext del plugin. Arreglar eso de fondo requiere cambios upstream. Este PR evita que el mismatch mate la TUI mientras tanto.

🕵️‍♂️ QA Testing:

  1. Instalar opencode 1.14.50.

  2. Apuntar ~/.config/opencode/tui.json al plugin compilado de esta branch.

  3. Iniciar opencode: no crashea. En stderr aparece:

    [sdd-plugin][host-compat] slot 'home_bottom' disabled: host TUI did not expose a Solid renderer. Pin opencode to a compatible version or upgrade opencode-sdd-engram-manage.
    
  4. Ejecutar :sdd-model con alt+k: el menú abre.

  5. Volver a opencode 1.14.49 y reiniciar: el badge renderiza normal sin warnings.

Local:

npm run typecheck
npm test         # 223 passed
npm run build

@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.6.5 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants