Commit Graph

4 Commits

Author SHA1 Message Date
Jordan Diaz
49b52b0f9f docs: colors/colorpicker/corners/ratio y aviso de que checkbox no existe
01-builder-fields.md documentaba `checkbox` y `colorpicker` como tipos validos
—y usaba colorpicker en un ejemplo— pero el parser no los reconocia. Verificado
contra el parser real: ambos salian con `type` indefinido, y en ese caso
funciones.php hace `continue` y **descarta la variable en silencio**. O sea que
el doc mandaba al agente a escribir campos que nunca llegaban al builder.json.

En cambio no documentaba `colors`, `corners` ni `ratio`, que si funcionan.

- Se documentan los cuatro tipos reales, con el formato de valor de cada uno.
  `colors` es una paleta de N colores en una sola variable (JSON de pares
  nombre/color, nombres declarados en data-field-colors); `colorpicker` es un
  color suelto (hex plano).
- `colorpicker` pasa a existir de verdad: se anade al parser y al compilador
  (companion en el plugin maestro). Forge ya tenia widget para ambos —
  ColorsField y ColorField— asi que solo faltaba la pieza del parser.
- `checkbox` se marca explicitamente como inexistente, con la alternativa
  (`list` de dos opciones).
- set_module_example_data documenta el formato de ambos, que el agente no podia
  adivinar.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 17:50:03 +00:00
Jordan Diaz
76221ee1d4 refactor: set_module_example_data escribe via el server Python
La tool llamaba a `action_ws=setStaticVars`, que hace un file_put_contents
del builder.json ENTERO en la web para cambiar una sola clave. Eso se
saltaba las dos garantias que protegen ese fichero: el bloqueo de escritura
de la API de ficheros (BLOCKED_GENERATED_FILENAMES en handlers/files.py) y
la allowlist de /api/modules/update-metadata.

El riesgo no era teorico. El builder.json es la unica memoria de que
variable vive en que columna de builder_custom: si una compilacion caia
entre la lectura y la escritura de setStaticVars, esta devolvia el mapeo
var->columna anterior encima del recien generado y el contenido guardado
quedaba colgado de la variable equivocada en TODAS las paginas que usan el
modulo.

Ahora delega en /api/modules/update-metadata, que ya es la via quirurgica
para la metadata y acepta staticVars en su allowlist (objeto, <=64KB,
<=200 claves).

Se aprovecha para quitar el volcado del schema y del payload completos por
consola en cada llamada.

Companion en el repo de Forge: compiler.js reenvia staticVars en cada
compilacion. Antes no lo mandaba, asi que el CMS lo tiraba al regenerar el
builder.json — solo 5 de 4870 modulos lo conservaban.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:21:16 +00:00
Jordan Diaz
6881d64a08 ajustes 2026-04-25 10:27:51 +00:00
Jordan
91cfdaee72 Initial commit 2026-04-01 23:16:45 +01:00