Stack técnico
SmartTab Organizer es una extensión de navegador multinavegador (Chromium MV3 y Firefox MV2), escrita íntegramente en TypeScript. Ninguna parte de la aplicación depende de un servidor o de un servicio de terceros: todo el código se ejecuta en el navegador.
Pila aplicativa
Sección titulada «Pila aplicativa»| Capa | Tecnología |
|---|---|
| Build y empaquetado | WXT (framework de extensiones multi-objetivo) |
| UI | React 19, Radix Themes y Radix Primitives |
| Tipos y validación | TypeScript estricto, Zod para los esquemas en runtime |
| Tests unitarios | Vitest y Testing Library |
| Tests E2E | Playwright (Chrome MV3) |
| Storybook | Storybook 8 con addon-a11y y test-runner usando axe-core |
| Documentación | Astro Starlight (este sitio) |
| Lint y formato | ESLint, Prettier |
Navegadores objetivo
Sección titulada «Navegadores objetivo»| Navegador | Manifest | Estado |
|---|---|---|
| Chrome | MV3 | Objetivo principal |
| Edge, Brave, Arc, Opera (basados en Chromium) | MV3 | Compatible (mismo artefacto que Chrome) |
| Vivaldi | MV3 | Parcial: la agrupación nativa no es compatible. La deduplicación y las sesiones funcionan. |
| Firefox | MV2 | Compatible (objetivos pnpm build:firefox, pnpm zip:firefox) |
Las API del navegador se acceden mediante wxt/browser, que normaliza las diferencias entre chrome.* y browser.*. La extensión usa un subconjunto presente en ambos: browser.tabs, browser.tabGroups, browser.storage, browser.action / browser.browserAction, browser.notifications, browser.scripting.
Almacenamiento
Sección titulada «Almacenamiento»| Backend | Contenido |
|---|---|
browser.storage.local | Reglas de dominio, ajustes, sesiones (pinned, active, archived), espacios de trabajo, categorías, preferencias de UI (estado expandido, etc.) |
browser.storage.session | Mapa perfil-ventana, borradores de sesión, guarda anti-reentrada de edición |
Sin cookies. Sin solicitudes de red más allá de las que hace el propio navegador.
Arquitectura en breve
Sección titulada «Arquitectura en breve»Consulta Arquitectura para una guía sobre los entry points, los módulos background y los hooks centrales.
Contribuir
Sección titulada «Contribuir»El repositorio recibe contribuciones. Las convenciones del proyecto (logger, accesibilidad, i18n, Storybook, estilo de escritura) se describen en CLAUDE.md. Las pautas para añadir un pack o un preset viven en src/data/packs/README.md y public/data/presets.json.