Repository navigation
Releases: Lean031110/SoftLBA
Release list
v1.0.20-rc14 — FRONTEND-01
FRONTEND-01 cierra los 4 bugs P0 del frontend (FE-001..FE-004).
- offline-queued resuelto: SW hace try-network-first
- hydration mismatch resuelto: useMounted + app-version + eliminados suppressHydrationWarning
- idempotencia frontend de pago: IdempotencyManager + paymentsFingerprint
- conectividad LAN vs Internet: useConnectivity hook con 5 estados
CI: GREEN
Tests: 405 unit + 27 integration + 6/7 E2E
SoftLBA v1.0.20-rc9 — CI Step Approach
FASE A-C completadas
A: Integration tests
- /api/health simplificado (solo DB check)
- Health check estricto: 200 + body.ok===true
- Servidor arrancado como STEP del workflow (no desde Vitest)
- Script test:integration para local
B: Tests sin falsos verdes
- Eliminado
if (!x) return - Eliminado
expect([200,400,409]).toContain() - Cada test tiene resultado esperado concreto
C: Test Matrix y Bug Register
- docs/TEST_MATRIX.md: 27 áreas clasificadas
- docs/BUG_REGISTER.md: 12 bugs (1 activo, 11 resueltos)
Métricas
- 375 unit tests
- 0 TS errors
- 0 lint errors
SoftLBA v1.0.20-rc4 — Global Setup Fix
Fix: EADDRINUSE y Hook Timeout en CI
Causa
Cada archivo de test de integración llamaba setupServer() que arrancaba su propio servidor Next.js en el mismo puerto. Al cerrar el primer servidor, el puerto quedaba en TIME_WAIT y el segundo fallaba con EADDRINUSE.
Fix
global-setup.tsarranca el servidor UNA sola vez para TODOS los tests.vitest.config.tsprincipal solo incluyetests/unit/.- Integration tests usan config separada con
globalSetup. - CI ejecuta integration con
--config tests/integration/vitest.config.ts.
Métricas
- Unit: 375 passed
- TS: 0 errores
- Lint: 0 errores
SoftLBA v1.0.20-rc3 — FK Fix en Integration Tests
Fix: Error P2003 (Foreign Key Constraint Violation)
Causa
Los tests db-integration.test.ts usaban test-user como userId en StockMovement.create(), pero ese usuario no existía en la DB. También usaban IDs de orden inexistentes en Table.currentOrderId.
Fix
- Creado
ensureTestUser()que hace upsert de un usuario real. - Todos los
userIden tests usan el ID del usuario creado. PrismaClientusa path absoluto atest-integration.db.createTestTablereseteacurrentOrderIda null en upsert.
Métricas
| Métrica | Valor |
|---|---|
| Unit tests | 375 pasando |
| TypeScript | 0 errores |
| Lint | 0 errores |
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)
SoftLBA v1.0.20-rc2 — CI Real + Tests de Calidad
Corrección del RC1
P0 — CI real
setupServer()con stderr VISIBLE (no suprimido)- DB path absoluta para evitar problemas de cwd
--maxWorkers=1para integración- Detección de proceso terminado prematuramente
P2 — Tests sin return
if (!productId) returnELIMINADO- Sustituido por
expect(productId).toBeTruthy() - Si falta un fixture, el test FALLA
P3 — Asserts concretos
expect([200, 400, 409]).toContain(status)ELIMINADO- Cada escenario tiene resultado esperado concreto
P4 — Build depende de integration-tests
build: needs: [quality, unit-tests, realtime-service, integration-tests]
P17-18 — Documentos de auditoría
docs/PRODUCTION_AUDIT.mdcreadodocs/RELEASE_CHECKLIST.mdcreado
Métricas locales
| Métrica | Valor |
|---|---|
| Tests | 375 pasando |
| TypeScript | 0 errores |
| Lint | 0 errores |
| Build | SUCCESS |
Estado de CI
- Local: GREEN
- GitHub: Pendiente de verificación tras push
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)
SoftLBA v1.0.20-rc13 — CI GREEN! 🟢
🟢 CI COMPLETAMENTE VERDE EN GITHUB ACTIONS
Todos los jobs pasaron:
| Job | Estado |
|---|---|
| quality | ✅ success |
| realtime-service | ✅ success |
| unit-tests | ✅ success |
| integration-tests | ✅ success |
| build | ✅ success |
FASE A — Integration tests cerrados
- Servidor arrancado como STEP del workflow (no desde Vitest)
- Health check estricto: 200 + body.ok===true
- Tests con FKs válidas (Order real para Table.currentOrderId)
- Tests de concurrencia aceptan 400 por stock insuficiente
FASE B — Tests sin falsos verdes
- Eliminado
if (!x) return - Asserts concretos (no
[200,400,409])
FASE C — Test Matrix y Bug Register
- docs/TEST_MATRIX.md
- docs/BUG_REGISTER.md
Métricas finales
- Unit tests: 375 passed
- Integration tests: 27 passed
- TypeScript: 0 errores
- Lint: 0 errores
- Build: SUCCESS
- CI: GREEN 🟢
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)
Proyecto cubano 🇨🇺
SoftLBA v1.0.20-rc1 — Release Candidate
🎯 Release Candidate — Candidato a Producción
Tras completar las FASES 20-38 del roadmap de estabilización, esta versión es candidata a producción.
📊 Métricas finales
| Métrica | Valor |
|---|---|
| Tests | 375 pasando (0 failed, 0 skipped) |
| TypeScript | 0 errores (principal + realtime) |
| Lint | 0 errores |
| Build | ✅ SUCCESS |
| CI | 5 jobs independientes |
✅ Roadmap completado
| Fase | Descripción | Estado |
|---|---|---|
| FASE 20 | CI reparado con tests de integración reales | ✅ |
| FASE 21-23 | Realtime unificado (token 5-part + authVersion) | ✅ |
| FASE 24-28 | Tests de integración con DB real + auditoría | ✅ |
| FASE 29-31 | Seguridad + PWA + DB auditadas | ✅ |
| FASE 32-33 | Instalación limpia + backup/restore | ✅ |
| FASE 34-36 | Documentación + CI profesional + lint | ✅ |
| FASE 38 | Release Candidate | ✅ |
🐛 Bug crítico corregido en esta serie
- Login
offline-queued: El Service Worker interceptaba POST/api/auth/loginy lo encolaba sin enviarlo al servidor.
⚠️ Riesgos restantes
- Frontend no auditado visualmente (solo tipos y seguridad)
- Tests de integración en CI pueden tardar >5min
- Service Worker en navegadores existentes necesita actualización automática
authVersiondel realtime vs DB — El realtime acepta tokens con cualquierauthVersion; no consulta la DB directamente
📦 Próximo paso
Tras revisión y aprobación del RC, se publicará v1.0.20 como release final de producción.
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)
Proyecto cubano 🇨🇺
SoftLBA v1.0.19.5 — Bug Login + Instalación + Backup
🐛 BUG CRÍTICO CORREGIDO: Login offline-queued
El Service Worker interceptaba TODOS los POSTs (incluyendo /api/auth/login) y los encolaba en Background Sync, devolviendo {ok: false, error: "offline-queued"} sin enviar la petición al servidor.
Fix: Las rutas de autenticación (/api/auth/*, /api/internal/*) ahora se excluyen del Background Sync y pasan directamente al servidor.
FASE 32-33 del roadmap
deploy/softlba.serviceydeploy/softlba-realtime.servicerecreados- Ruta hardcodeada
/home/z/my-projecteliminada depay/route.ts - Tests de instalación limpia y backup/restore (22 tests)
Métricas
| Métrica | Valor |
|---|---|
| Tests | 375 pasando |
| TypeScript | 0 errores |
| Lint | 0 errores |
| Build | ✅ SUCCESS |
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)
SoftLBA v1.0.19.4 — Seguridad + PWA + DB Auditadas
FASE 29-31: Auditoría de seguridad, PWA y base de datos
Bugs encontrados y corregidos
/api/public/configexponía datos operacionales (usdToCup, offlineWifiName, etc.) → eliminadosshowDemoUsersse exponía desde DB → controlado por envDEMO_USERS- No había
validateUrlen admin/config → añadido (anti-XSS stored)
Tests: 353 pasando (33 nuevos)
- FASE 29: endpoints protegidos, rate limiting, auth, ownership, IDOR (13 tests)
- FASE 30: PWA, manifest, SW, CDNs, standalone, offline (10 tests)
- FASE 31: schema, índices, onDelete, .env.example, .gitignore (13 tests)
Métricas
| Métrica | Valor |
|---|---|
| Tests | 353 pasando |
| TypeScript | 0 errores |
| Lint | 0 errores |
| Build | ✅ SUCCESS |
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)
SoftLBA v1.0.19.3 — Tests de Integración + Auditoría
FASE 24-28: Tests de integración con DB real + auditoría de negocio
Tests nuevos: 33 (total 320)
tests/integration/db-integration.test.ts
- Inventario con SQLite real: consume, returnStock, transfer
- Mesas con SQLite real: takeTable, releaseTable, transferTable
- Concurrencia: dos consumos simultáneos de stock=1
tests/unit/audit-business-rules.test.ts
- FASE 25: InventoryService como fuente única (5 tests)
- FASE 26: Estados y transiciones con DESPACHADO (8 tests)
- FASE 26: Productos DIRECTO no van a producción (2 tests)
- FASE 26: Multiárea targetAreaId estricto (3 tests)
- FASE 27: consumeRecipe transaccional (4 tests)
- FASE 28: Snapshot histórico multimoneda (11 tests)
Métricas
| Métrica | Valor |
|---|---|
| Tests | 320 pasando |
| Errores TypeScript | 0 |
| Errores lint | 0 |
| Build | ✅ SUCCESS |
Desarrollador: Leandro (@Lean031110)
IA: Super Z (Z.ai / GLM)