Changelog
Cambios notables en ps-lando entre releases. Mirror del CHANGELOG.md del repo de la CLI.
Esta página es un mirror del CHANGELOG.md de la CLI. Las entradas siguen Keep a Changelog.
[1.0.0] — 2026-04-27
Segundo release candidate. Conecta la maquinaria de detección genérica / presets v1 al runtime, arregla una regresión de módulos stock y convierte la selección de tema + módulos en prompts explícitos. Validado contra Panda 2.9.2, Leo Classic y Hummingbird — mira la Matriz de compatibilidad de temas.
Añadido
- Detección genérica conectada a
pslando list. Ahora el comando list muestra tres secciones nuevas — Themes / Modules / Unknown — junto al resumen de Panda. Cualquier zip conconfig/theme.{xml,yml}a profundidad 0 o 1 clasifica como tema; cualquier zip con<name>/config.xmlclasifica como módulo. - Prompt agnóstico
selectde tema enpslando create— cuando se detectan 1+ temas, la CLI muestra unselect(clack) con cada nombre de tema más una opciónNone. Con-y: 1 tema = auto-seleccionado, 2+ = exit 2 (AmbiguousThemeError) con hint para pasar--theme=<name>. - Prompt
multiselectde módulos enpslando create— cada zip de módulo detectado va pre-marcado; desmarca lo que no quieras. Con-y: todos auto-marcados. - Binding de preset por nombre del tema seleccionado. Un preset cuyo nombre coincida con el del tema seleccionado se activa automáticamente. Elegir
pandaactiva el presetpandaincluido; elegir cualquier otro tema (oNone) no activa ninguno.--no-presety--preset=<name>lo sobrescriben. - Fallback de carpeta vacía. Ejecutar
pslando createen una carpeta sin zips se salta ambos prompts y produce un install vanilla de PS con los temasclassic/hummingbirdincluidos.
Cambiado
pslando install-modules(standalone) solo escanea modules/ si se le pide explícitamente. Sin--include=<prefix>(o el flujo Panda implícito víapslando create), el comando imprime "nothing to do" y sale 0. Pasa--include=stpara escanear o--only=name1,name2para instalar módulos específicos. Esto arregla la regresión de rc.1 dondepslando install-modulesen un sandbox recién creado re-instalaba módulos stock pre-instalados de PS.pslando createya no re-instala accidentalmente módulos pre-instalados de PS. Solo se consideran para install los zips de módulos que el usuario soltó en cwd.- El log de decisiones resueltas usa la vista canónica
detectAllZips. Los temas detectados víaconfig/theme.yml(p. ej. Falcon) ahora aparecen bajothemes:en el log, no enunknown:.
Arreglado
- Cosmético: el resumen final "install step errored" ahora dice "no modules to install" cuando el paso de install se saltó realmente (no falló).
- El install de módulos reclasifica vía DB
ps_module.active. Los warnings deprecated deunlinken PS 9.1 ya no cuentan como fallo si el módulo termina activo en la base de datos.
Paridad Cinetic Panda
Preservada byte-for-byte a través de la nueva costura de prompts: el flujo -y con panda*.zip + steasybuilder* + steasy_trans_panda* en cwd auto-selecciona panda como tema, auto-marca todos los módulos detectados, activa el preset panda incluido por coincidencia de nombre y produce la misma extracción themes/panda/ + bloque module_selection que v0.6.
Matriz de smoke
| Tema | Resultado |
|---|---|
| Panda 2.9.2 (Cinetic) | ✅ Front 200, 55/56 módulos activos |
| Leo Classic 2025 | ✅ Front 200, deploy genérico |
| Hummingbird (PS incluido) | ✅ Front 200 |
| Falcon 3.1.2 | ⚠ Front 500 — tema PS 8.x sobre PS 9.1 (problema del tema, no de la CLI). Ver theme-compatibility. |
[1.0.0-rc.1] — 2026-04-26
Primer release candidate de v1.0. Se etiqueta tras el merge de PR-5 y captura del baseline smoke de Cinetic Panda. No promover a
latesthasta que el smoke gate haya corrido end-to-end contra la fixture de Cinetic Panda.
BREAKING CHANGES
--skip-easybuildereliminada. Usa--exclude=steasybuilder*(o ponmodules.exclude/ top-levelexcludeenpslando.config.json). La flag legacy ahora termina con exit 64 más un hint de migración de una línea.--skip-blogeliminada. Usa--exclude=stblog*(o vía configuración de grupos del preset panda). Mismo comportamiento exit-64 + hint.--skip-socialeliminada. Usa patrones--exclude=<glob>o config de preset. Exit 64 + hint.--skip-marketingeliminada. Usa patrones--exclude=<glob>o config de preset. Exit 64 + hint.
Las cuatro flags eliminadas eran filtros de grupo hardcodeados en el flujo Panda de v0.6. v1.0 las reemplaza por el --exclude glob genérico (repetible, picomatch, case-insensitive, soporta !negación) que compone con --only y se llama igual desde flags CLI o desde pslando.config.json (top-level exclude o modules.exclude).
El exit code 64 (UsageError) es la señal canónica de "tu uso de la CLI está mal". Cada flag eliminada emite el hint exacto a stderr antes de salir; sin efectos en FS ni en lando.
Mira Migración desde 0.x para una guía paso a paso.
Añadido
ps-lando init— asistente interactivo (clack, 7 prompts) que escribepslando.config.json, uninit-scripts/01-example.shde ejemplo (chmod +x, solo si el directorio no existe) y añade.pslando-cache.jsona.gitignore. Flags:--yes(salta prompts con defaults documentados),--force(sobrescribe config existente; si no, rechaza con exit 82). Ctrl-C sale con 0 y"Init cancelled — no files written.".--exclude=<glob>(repetible, encreateeinstall-modules) — glob picomatch, case-insensitive. Compone con--only. El valor CLI REEMPLAZA elexcludedepslando.config.json(no concatena).--theme=<name|path|none>— override explícito de tema.namematchea zip detectado /theme.yml.pathacaba en.zip.nonedescarta el deployment del tema entero.--preset=<name>(repetible) — carga un preset específico (panda,none, o ruta relativa como./presets/foo.ts).--no-preset— desactiva todos los presets, incluso los auto-detectados.- Preset
pandaincluido — encapsula el flujo Panda v0.6 (4 grupos de módulos, warning del bridge EB, prioridad INFRA + STBLOG_PARENT, scaffolding de child theme). Auto-detectado cuando hay unpanda*.zipen cwd. Desactivable con--no-presetopresets: []en config. pslando.config.{json,ts,js}— archivo de config descubierto por cosmiconfig, validado con zod. Configs TS se cargan lazy conjiti.--config=<path>corta el descubrimiento. Errores de validación lanzanConfigSchemaError(exit 65).- Resolver de plan en 5 capas — defaults < preset auto-detect < config < CLI < env. Los arrays REEMPLAZAN (no concatenan). Devuelve un
ResolvedPlanconProvenance<T>por campo para que el log de decisiones resueltas pueda mostrar DE DÓNDE viene cada valor. - Log de decisiones resueltas en stderr — un bloque por invocación de
create, texto o JSON. Controlado por--log-format/PSLANDO_LOG_FORMAT/ configlogFormat. - Migración del esquema
.ps-lando.json0 → 1 — la lectura tolera todas las shapes de v0.6; las escrituras siempre emitenschema: 1más todos los campos v1 más los mirrors legacy para que un install de ps-lando v0.6 siga leyendo el archivo. - Event bus tipado — 4 eventos v1.0 (
plan-resolved,step-start,step-end,error) para telemetría futura. --force-overwrite-theme,--allow-stock-overwrite,--allow-incompat-theme,--strict-compat,--config,--no-cache,--log-formatconectadas encreate.- 4 env vars nuevas en hooks —
PS_LANDO_THEME_NAME,PS_LANDO_PRESETS,PS_LANDO_MODULES_INSTALLED(solo post),PS_LANDO_RESOLVED_PLAN_JSON(con fallback@<filepath>cuando supera 32KB).
Cambiado
- Layout de tests —
tests/→tests/unit/. Proyecto smoke entests/smoke/gatekeeped porPSLANDO_SMOKE=1(pnpm test:smoke). - Deployment de tema — extraídos
findThemeRootydeployTheme(theme-agnostic) asrc/lib/theme.ts. Aceptaconfig/theme.ymly el legacy PS 1.6config/theme.xml. Ignora__MACOSX/y dotfiles. - Shape de detección —
DetectedZipsgeneralizado de la forma panda-específica{ panda, easybuilder, transPanda, otherModules }a la genérica{ themes, modules, unknown, warnings }deZipClassification. - Resolver de deps de módulos — prioridades INFRA + STBLOG_PARENT salieron de
module-deps.tsy se metieron encontributeDepEdges()del preset panda. El graph de install ahora pliega edges del preset. El flujo Panda queda byte-equivalente a v0.6.
Paridad Cinetic Panda
- El flujo por defecto (
ps-lando create -yconpanda*.zip+steasybuilder*+steasy_trans_panda*zips en cwd, sin flags CLI, sin config) produce la MISMA extracciónthemes/panda/, el MISMO set de módulosst*instalados y el MISMO bloque byte-a-bytemodule_selectionen.ps-lando.jsonque v0.6.0.
[0.6.0] — 2026-04-25
Añadido
ps-lando db reset— tira la BD del sandbox y re-ejecuta el instalador CLI + install de módulos + activación de tema. ~3-5 min vs ~6 min de uncreatecompleto. Reusa parámetros ymodule_selectionde.ps-lando.json.ps-lando db dump [output]— dump MySQL gzipped.--with-filesemite un.tar.gzque incluyeimg/+themes/<active>/.modules/se excluye intencionalmente.ps-lando db restore <path>— auto-detecta formato por extensión (.sql.gz→ solo BD,.tar.gz→ BD + files).ps-lando doctor— checklist diagnóstico.--fixpregunta para aplicar fixes auto-recuperables interactivamente.module_selectionpersistido en.ps-lando.jsonpara quedb resetreaplique el mismo filtrado.
[0.5.x] — 2026-04-24/25
0.5.2
- Flag
--no-copy-skippedencreate— junto a una flag de selección, evita que los módulos filtrados se copien amodules/.
0.5.1
- Reintento de race de cache de Symfony de 1 a 3 intentos con backoff exponencial (500ms, 1500ms, 3000ms).
0.5.0
- Grupos de módulos + flags
--skip-*/--only— cuatro grupos hardcodeados (blog,easybuilder,social,marketing). (Eliminadas en 1.0.0 — ver migración.) - Cache unificado en
~/.cache/ps-lando/(XDG-compliant) con migración silenciosa de layouts pre-0.5. - Multiselect interactivo de módulos en
create—All modules/Core only/Custom....
[0.4.x] — 2026-04-24
- 0.4.2: Install de módulos en paralelo (concurrencia 3 por defecto).
--sequentialcomo salida de emergencia. Auto-retry de race de cache de Symfony. - 0.4.1: Auto-creación de directorios de cache de HTMLPurifier post-instalador CLI (recovery PS 8.2.x).
- 0.4.0: Hooks + recipes incluidas (
spain-taxes,demo-catalog-10,demo-customer-with-orders,demo-cms-pages,clean-seed,cache-warmup).
Releases anteriores
Para 0.3.x y anteriores, mira el CHANGELOG.md en GitHub.