wsl-labs GitHub

📓 Changelog#

Todos los cambios relevantes del repositorio se registran aquí.

El formato sigue Keep a Changelog y el proyecto adopta versionado semántico.


[No publicado]#

Added#

(https://vladimiracunadev-create.github.io/wsl-labs/): portada con los 12 casos, los requisitos medidos y el quickstart, más toda la documentación del repositorio publicada como HTML — las guías, los cheatsheets y el README de cada caso. Ningún enlace del sitio saca al lector a un .md crudo.

lee containers/containers.config.json y version.txt, así que la web no puede prometer un caso que el repositorio no tenga. El cuerpo de la portada y los estilos viven en site-src/; site/ es salida y está en .gitignore.

falla si una página enlazada no existe, si un ancla no está definida o si un fichero enlazado en GitHub ya no está en el repositorio. El sitio no se publica en rojo.

genera, verifica y publica. Acciones fijadas a SHA. El panel de control (localhost) no se publica.

docs/sitio-web.md.


[0.4.1] - 2026-07-06#

Added#

mover imágenes (wslc save/load), volúmenes (backup/restore por stdout/stdin) y la distro (wsl --export/--import) a otro equipo. Con el quirk real de la preview (bind mounts) y su rodeo. Algo que no está en docker-labs ni unikernel-labs (sus docs de "migración" son de nube/instalador).

backup/restore volumen — redirección binaria vía cmd) y targets equivalentes en el Makefile (export-image, import-image, backup-volume, restore-volume). Verificado: round-trip de imagen y de volumen a un volumen nuevo.


[0.4.0] - 2026-07-06#

Límites de recursos y persistencia de datos — aprovechando la CLI de wslc.

Added#

wslc run -m <RAM>M --cpus <n> — RAM tope del valor recomendado medido y CPU por categoría (starter 0.5 · platform 1 · infra 2). Nuevo campo limits en el catálogo; el panel lo muestra como 🚦 tope … en cada tarjeta. Verificado: postgres corriendo con tope 1.00 GiB aplicado (wslc stats).

Elasticsearch, RabbitMQ, Jenkins). El panel crea un wslc volume con nombre y lo monta (-v nombre:/ruta); al Bajar se conservan los datos. Marca 💽 persistente en la tarjeta. Verificado: un dato escrito en postgres sobrevive a un ciclo bajar → levantar.

(docs/wslc-cli-referencia.md): todos los comandos, subcomandos y opciones (container/image/network/volume/registry/system session).


[0.3.1] - 2026-07-06#

Added#

imagen (wslc images) y RAM en reposo (wslc stats) por caso, con mínimo y recomendado por caso y del sistema. El panel muestra 💾 tamaño y 🧠 RAM en cada tarjeta más una franja de requisitos del sistema; el catálogo containers.config.json incorpora requirements por caso y un bloque system. Detalle en REQUIREMENTS.md.


[0.3.0] - 2026-07-06#

Giro completo: wsl-labs es ahora una plataforma de contenedores (WSL Container Center).

El repo deja de girar en torno a servicios en la distro y pasa a levantar y controlar contenedores con wslc, como docker-labs pero con el motor nativo de WSL. WSL queda como documentación de contexto.

Changed#

GET /api/wslc/overview y POST /api/wslc/{build,up,down,logs}. Backend Node reescrito, sólo wslc (se retiró el código de servicios, wsl -u root y keepalive).

Added#

containers/NN-* con Dockerfile propio o imagen pública, y catálogo containers/containers.config.json: node-api, php-lamp, python-api, redis-cache, postgres-api, nginx-web, rabbitmq, prometheus-grafana, multi-service, go-api, elasticsearch, jenkins. Multi-contenedor + redes wslc para los platform/infra.

Removed#

WSL (install-*.sh, setup-passwordless-sudo.sh, doctor.sh, backup/restore). La documentación de WSL (historia, comandos, cheatsheets) se conserva.

Verified#

Windows; las apps platform reportan su base de datos reachable (Redis, PostgreSQL, MariaDB, MongoDB) por la red wslc; Elasticsearch devuelve el cluster real y Jenkins responde. Panel: 12/12 corriendo.

Requiere WSL 2.9+ con wslc (preview): wsl --update --pre-release.

[0.2.0] - 2026-07-06#

Track de contenedores WSLC — imágenes reales, no solo servicios.

Tras la llegada de WSL Containers (WSLC) —el motor de contenedores nativo de WSL— el repo deja de cubrir solo servicios en la distro y añade imágenes y contenedores reales (tipo Docker), conservando el track de servicios existente.

Added#

Dockerfiles y verificadas (HTTP 200 desde Windows): wsl-labs/web-nginx (:8091), wsl-labs/node-api (:8092), wsl-labs/python-flask (:8093). Catálogo en wslc/wslc.config.json.

📦 Construir / ▶ Ejecutar / ⏹ Detener / 📄 Logs. Nuevos endpoints: GET /api/wslc/overview, POST /api/wslc/{build,run,stop,logs}. El panel localiza wslc.exe (C:\Program Files\WSL\wslc.exe) y detecta si no está.

Verified#

curl localhost:8091/8092/8093 = HTTP 200. Ciclo Construir/Ejecutar/Detener operado desde el panel.

WSLC requiere WSL 2.9+ (preview): wsl --update --pre-release. El track de servicios (nginx/apache/postgres como demonios) sigue disponible sin cambios.

[0.1.2] - 2026-07-06#

Los 6 servicios quedan operativos de verdad, verificados end-to-end.

Fixed#

al reiniciarse la instancia WSL. Ahora son servicios systemd habilitados (wsl-labs-node, wsl-labs-flask), creados por sus install-*.sh, que arrancan solos en cada boot igual que nginx/apache/postgres.

el módulo http nativo: arranca sin npm install.

(como curl localhost), evitando falsos "detenido" en apache/node.

ahora cachea y acumula positivos (un servicio instalado no vuelve a aparecer como no instalado).

expanden vía wsl.exe -- bash -lc): el servidor sustituye la ruta literal.

Added#

(labs/11-mini-servidor-completo/nginx-mini.conf) — antes nada escuchaba ahí.

WSL (como Docker Desktop con su VM) para que los servicios sigan accesibles.

Verified#

contraseña) y respondiendo desde Windows: nginx :8080, apache :8081, node :8082, flask :8083, mini :8090HTTP 200; postgres :5432 aceptando conexiones. Dashboard: 6/6 saludables.


[0.1.1] - 2026-07-06#

Operatividad real estilo Docker: el panel deja de pedir contraseña.

Changed#

(wsl.exe -u root), igual que Docker corre privilegiado. Ya no se pide contraseña para arrancar/detener servicios ni para instalarlos. El paso de passwordless sudo deja de ser necesario para el panel (queda opcional para uso por terminal con make up-*).

Added#

POST /api/wsl/install que corre el install-*.sh del lab como root desde el propio panel. Flujo 1-click: Instalar → Levantar, sin terminal ni contraseña.

pista de instalación por servicio.

Fixed#

peculiaridad de wsl.exe (las variables asignadas dentro de bash -lc no se expanden); ahora usa comandos literales sin variables de shell.

Verified#

desde Windows a http://localhost:8080HTTP 200; ciclo Levantar/Detener/Levantar controlando el servicio real.


[0.1.0] - 2026-07-06#

Primera versión del WSL Control Center — se alcanza paridad estructural con los repos hermanos docker-labs y unikernel-labs.

Added#

módulo http nativo (sin dependencias npm). Escucha solo en 127.0.0.1, con rate-limit nativo y token opcional WSL_LABS_TOKEN. Actúa de puente Windows ↔ WSL2 vía wsl.exe -d <distro> -- bash -lc "<comando>". Endpoints: GET /api/overview, GET /api/health/:id, POST /api/wsl/{start|stop|logs}.

.exe sin dependencias externas: verifica WSL2, detecta la distro, arranca el Control Center en segundo plano, hace polling a /api/overview y abre el navegador en :9092.

puertos, comandos start/stop/logs, protocolo de health y estado por lab.

comandos base WSL, sistema de archivos, systemd, nginx (:8080), apache+php (:8081), node (:8082), flask (:8083), postgresql (:5432), backup export/import, mini-servidor completo (:8090) y troubleshooting.

(tests Node del Control Center) y build del launcher/instalador Windows.


📖 Ver también: ROADMAP.md · PROJECT_STATUS.md

Fuente: CHANGELOG.md