$ ps-lando

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 con config/theme.{xml,yml} a profundidad 0 o 1 clasifica como tema; cualquier zip con <name>/config.xml clasifica como módulo.
  • Prompt agnóstico select de tema en pslando create — cuando se detectan 1+ temas, la CLI muestra un select (clack) con cada nombre de tema más una opción None. Con -y: 1 tema = auto-seleccionado, 2+ = exit 2 (AmbiguousThemeError) con hint para pasar --theme=<name>.
  • Prompt multiselect de módulos en pslando 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 panda activa el preset panda incluido; elegir cualquier otro tema (o None) no activa ninguno. --no-preset y --preset=<name> lo sobrescriben.
  • Fallback de carpeta vacía. Ejecutar pslando create en una carpeta sin zips se salta ambos prompts y produce un install vanilla de PS con los temas classic / hummingbird incluidos.

Cambiado

  • pslando install-modules (standalone) solo escanea modules/ si se le pide explícitamente. Sin --include=<prefix> (o el flujo Panda implícito vía pslando create), el comando imprime "nothing to do" y sale 0. Pasa --include=st para escanear o --only=name1,name2 para instalar módulos específicos. Esto arregla la regresión de rc.1 donde pslando install-modules en un sandbox recién creado re-instalaba módulos stock pre-instalados de PS.
  • pslando create ya 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ía config/theme.yml (p. ej. Falcon) ahora aparecen bajo themes: en el log, no en unknown:.

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 de unlink en 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

TemaResultado
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 latest hasta que el smoke gate haya corrido end-to-end contra la fixture de Cinetic Panda.

BREAKING CHANGES

  • --skip-easybuilder eliminada. Usa --exclude=steasybuilder* (o pon modules.exclude / top-level exclude en pslando.config.json). La flag legacy ahora termina con exit 64 más un hint de migración de una línea.
  • --skip-blog eliminada. Usa --exclude=stblog* (o vía configuración de grupos del preset panda). Mismo comportamiento exit-64 + hint.
  • --skip-social eliminada. Usa patrones --exclude=<glob> o config de preset. Exit 64 + hint.
  • --skip-marketing eliminada. 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 escribe pslando.config.json, un init-scripts/01-example.sh de ejemplo (chmod +x, solo si el directorio no existe) y añade .pslando-cache.json a .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, en create e install-modules) — glob picomatch, case-insensitive. Compone con --only. El valor CLI REEMPLAZA el exclude de pslando.config.json (no concatena).
  • --theme=<name|path|none> — override explícito de tema. name matchea zip detectado / theme.yml. path acaba en .zip. none descarta 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 panda incluido — 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 un panda*.zip en cwd. Desactivable con --no-preset o presets: [] en config.
  • pslando.config.{json,ts,js} — archivo de config descubierto por cosmiconfig, validado con zod. Configs TS se cargan lazy con jiti. --config=<path> corta el descubrimiento. Errores de validación lanzan ConfigSchemaError (exit 65).
  • Resolver de plan en 5 capas — defaults < preset auto-detect < config < CLI < env. Los arrays REEMPLAZAN (no concatenan). Devuelve un ResolvedPlan con Provenance<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 / config logFormat.
  • Migración del esquema .ps-lando.json 0 → 1 — la lectura tolera todas las shapes de v0.6; las escrituras siempre emiten schema: 1 má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-format conectadas en create.
  • 4 env vars nuevas en hooksPS_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 teststests/tests/unit/. Proyecto smoke en tests/smoke/ gatekeeped por PSLANDO_SMOKE=1 (pnpm test:smoke).
  • Deployment de tema — extraídos findThemeRoot y deployTheme (theme-agnostic) a src/lib/theme.ts. Acepta config/theme.yml y el legacy PS 1.6 config/theme.xml. Ignora __MACOSX/ y dotfiles.
  • Shape de detecciónDetectedZips generalizado de la forma panda-específica { panda, easybuilder, transPanda, otherModules } a la genérica { themes, modules, unknown, warnings } de ZipClassification.
  • Resolver de deps de módulos — prioridades INFRA + STBLOG_PARENT salieron de module-deps.ts y se metieron en contributeDepEdges() 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 -y con panda*.zip + steasybuilder* + steasy_trans_panda* zips en cwd, sin flags CLI, sin config) produce la MISMA extracción themes/panda/, el MISMO set de módulos st* instalados y el MISMO bloque byte-a-byte module_selection en .ps-lando.json que 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 un create completo. Reusa parámetros y module_selection de .ps-lando.json.
  • ps-lando db dump [output] — dump MySQL gzipped. --with-files emite un .tar.gz que incluye img/ + 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. --fix pregunta para aplicar fixes auto-recuperables interactivamente.
  • module_selection persistido en .ps-lando.json para que db reset reaplique el mismo filtrado.

[0.5.x] — 2026-04-24/25

0.5.2

  • Flag --no-copy-skipped en create — junto a una flag de selección, evita que los módulos filtrados se copien a modules/.

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 createAll modules / Core only / Custom....

[0.4.x] — 2026-04-24

  • 0.4.2: Install de módulos en paralelo (concurrencia 3 por defecto). --sequential como 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.

On this page