Apariencia
Preguntas frecuentes
Claves y firma
¿Puedo firmar con la clave de Hury?
No. La clave oficial de Hury (~/.hury/plugin-signing.pem) no sale del equipo del autor y no hay ninguna web que firme con ella. Tú firmas con tu clave, y el dueño de la instalación decide si confía en ella. Ver Seguridad.
He firmado mi plugin y la instalación lo rechaza («La firma del plugin no es válida»)
La instalación no tiene tu clave pública en PLUGIN_TRUSTED_KEYS, o el .zip se modificó después de firmar (cualquier byte cambiado invalida las huellas). Comprueba con hury-plugin verify <zip> --key <tu pública>; si pasa, el problema es la configuración del servidor. Recuerda reiniciar la API tras cambiar la variable.
¿Qué pasa si pierdo mi clave privada?
No se puede recuperar. Genera otra, da la nueva clave pública a los dueños de las instalaciones y vuelve a firmar. Mientras no la acepten, no podrán actualizar tus plugins.
¿Se puede firmar sin instalar el kit?
Sí: el firmador del navegador. Hace la misma firma sobre el mismo checksums.json. El zip debe haberse construido antes (con hury-plugin build).
¿Es seguro firmar en el navegador?
La página lleva una CSP con connect-src 'none': no puede hacer ninguna conexión de red, así que la clave y el zip no pueden salir. Pero una extensión del navegador puede leer la página. Para claves valiosas, usa la CLI.
¿Cómo sé con qué clave está firmado un plugin?
En Ajustes → Módulos y en el Marketplace figura «Firmado por Hury» (oficial) o «Clave de confianza ab12cd34» (la huella de 8 caracteres de la clave de confianza); si esa clave ya no está en PLUGIN_TRUSTED_KEYS, «Clave retirada ab12cd34» y el plugin no se carga. hury-plugin verify y hury-plugin pubkey imprimen la misma huella.
Instalación
¿Puede cualquiera añadir mi clave a una instalación?
Solo quien administra el servidor: PLUGIN_TRUSTED_KEYS es una variable de entorno de la API, no un ajuste de la interfaz. Un usuario del panel con permiso para subir plugins no puede ampliar las claves aceptadas.
¿Mi plugin aparecerá como oficial?
No. Un plugin firmado con una clave de confianza nunca cuenta como oficial, aunque tú seas Hury Studio con otra clave, y no puede usar el catálogo privado de Hury.
¿Se puede sustituir un plugin oficial por uno mío con su misma clave?
No: el instalador lo rechaza. Habría que desinstalar el oficial primero.
Subo la versión 1.1.0 y no hace nada
Comprueba que version en plugin.json es mayor que la instalada: el instalador omite una versión ya instalada. Tras instalar, la API y el worker se reinician solos (hasta 15 segundos); el panel espera y se recarga.
«El panel no expone…» / «Cannot read properties of undefined»
Tu plugin importa algo que el host no entrega. En el panel (@/…) solo existe lo del import.meta.glob de runtime.ts; en la API, lo del registro del host. hury-plugin build lo detecta antes de empaquetar. Ver host de la API y admin.
Desarrollo
¿Por qué no puedo hacer import * as?
Los imports del host se convierten en lecturas de objetos globales con los nombres que importas. import * as impide saber qué nombres necesitas. Importa los nombres.
¿Por qué mis tests fallan con «Cannot read properties of undefined (reading …)» al cargar?
El host de pruebas del kit solo trae lo mínimo. Si tu API importa otros módulos del host, añádelos como dobles (createHostMock(dir, overrides)). Ejemplo: paso 7.
¿Cómo uso un permiso que no existe en el tipo Permission?
Con el cast perm() de api/tables.ts. Es el único punto donde el plugin salta el tipo del host.
¿Puedo añadir una columna a una tabla del núcleo?
No desde un plugin. Es un cambio del host.
¿Puedo depender de otro plugin?
Sí, con requires y, si importas su código, @plugin/<clave>. Los ciclos se rechazan. Ver Dependencias.
¿Cómo hago un pack?
Un plugin.json con "pack": true y requires, sin api/ ni admin/. Ver Dependencias.
¿Cómo pruebo contra una base de datos real?
El kit no ejecuta PostgreSQL. Instala el .zip firmado en una instalación de pruebas con tu clave en PLUGIN_TRUSTED_KEYS, enciende el módulo y prueba. No uses producción.
¿Hay una API estable?
El contrato con el host es apiVersion (actualmente 2). Se amplía sin avisar (módulos y exportaciones nuevas, compatible); lo que cambia o se retira sube la versión y se documenta en el historial.
Datos
Desinstalé el plugin y las tablas siguen
Es lo esperado: desinstalar quita el código y deja los datos. «Desinstalar y borrar datos» es una acción aparte, irreversible y con doble confirmación. Ver Ciclo de vida.
¿Puedo editar una migración que ya publiqué?
No. Una migración publicada no se edita nunca: añade la siguiente. Las instalaciones que ya la aplicaron no la repiten.
¿Qué hace «Versión anterior» con mis tablas?
Nada: vuelve el código. Por eso las migraciones deben ser compatibles hacia atrás.