limbo-component 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,47 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [4.0.0] - 2026-05-07
9
+
10
+ Milestone v4.0.0 — estabilización en cinco fases ordenadas por dependencia técnica: cache,
11
+ seguridad, refactor de `App.jsx`, tests de core y accesibilidad. Ver
12
+ `.planning/v4.0.0-MILESTONE-AUDIT.md` y `.planning/phases/` para detalle por requirement.
13
+
14
+ ### Added
15
+
16
+ - **Infraestructura de tests** — Vitest + jsdom + MSW configurados en `vite.config.js`;
17
+ mock global de `window.limboCore` y handlers MSW base. Suite cubre `LimboCore`,
18
+ `ConfigManager`, hooks de cache, cumplimiento de seguridad y axe/ARIA.
19
+ - **Hooks por dominio** — `useGalleryActions`, `useUploadActions`, `useCropperActions`
20
+ extraídos de `App.jsx` para aislar efectos secundarios y permitir tests unitarios.
21
+ - **Componentes de tab** — `GalleryTab`, `UploadTab`, `CropperTab` extraídos de `App.jsx`
22
+ con montaje/desmontaje limpio y estado preservado al cambiar de pestaña.
23
+ - **A11y WCAG 2.1 AA** — Roles ARIA en `ModalManager` y `ImageCard`, focus trap en modal,
24
+ `aria-label` i18n (es/en/pt/fr) en botones de acción, fallback de `alt` para imágenes
25
+ sin descripción, touch targets mínimos 44×44 px y guards responsive a 375 px.
26
+ - **Tests de accesibilidad** — `axe-core` integrado vía vitest para `ModalManager` e
27
+ `ImageCard`.
28
+
29
+ ### Fixed
30
+
31
+ - **Cache de galería** — `clearImageCache()` ya no se ejecuta durante el render body;
32
+ movido a `useEffect` con cleanup. Subir, recortar/guardar variante o borrar un asset
33
+ refrescan la galería sin recargar. Reabrir el modal no muestra estado rancio.
34
+ - **XSS por `innerHTML`** — Eliminadas todas las asignaciones a `innerHTML` en
35
+ `ModalManager._createBody()` y `AutoInputManager`; sustituidas por `createElement` y
36
+ `textContent`.
37
+ - **Header CORS incorrecto** — Eliminado el envío de `Access-Control-Allow-Origin` como
38
+ request header en `apiClient.js` (era no-op y semánticamente erróneo).
39
+ - **JWT storage** — Modo `session` ya no escribe tokens en `localStorage`; los almacena
40
+ en memoria de módulo. Decisión documentada en `.planning/PROJECT.md` (Key Decisions).
41
+ - **`setTimeout` sin cleanup** — `CropperView.jsx` libera timers en unmount.
42
+
43
+ ### Changed
44
+
45
+ - **Versión** — Bump a `4.0.0` (breaking: el modo `session` ya no persiste tokens entre
46
+ recargas; integraciones que dependían del comportamiento anterior deben migrar a modo
47
+ `manual` o `jwt`).
48
+
8
49
  ## [3.5.2] - 2026-02-17
9
50
 
10
51
  Updated README.md & CHANGELOG.md