Stack technique
SmartTab Organizer est une extension navigateur cross-browser (Chromium MV3 et Firefox MV2), entièrement écrite en TypeScript. Aucune partie de l’application ne dépend d’un serveur ou d’un service tiers : la totalité du code s’exécute dans le navigateur.
Pile applicative
Section intitulée « Pile applicative »| Couche | Technologie |
|---|---|
| Build et packaging | WXT (framework d’extensions multi-cibles) |
| UI | React 19, Radix Themes et Radix Primitives |
| Types et validation | TypeScript strict, Zod pour les schémas runtime |
| Tests unitaires | Vitest + Testing Library |
| Tests E2E | Playwright (Chrome MV3) |
| Storybook | Storybook 8 + addon-a11y et test-runner avec axe-core |
| Documentation | Astro Starlight (ce site) |
| Lint et format | ESLint, Prettier |
Cible navigateurs
Section intitulée « Cible navigateurs »| Navigateur | Manifest | Statut |
|---|---|---|
| Chrome | MV3 | Cible principale |
| Edge, Brave, Arc, Opera (basés Chromium) | MV3 | Compatible (même artefact que Chrome) |
| Vivaldi | MV3 | Partiel · le groupage natif n’est pas pris en charge. Déduplication et sessions fonctionnent. |
| Firefox | MV2 | Compatible (cibles pnpm build:firefox, pnpm zip:firefox) |
Les API navigateur sont accédées via wxt/browser, qui normalise les différences entre chrome.* et browser.*. L’extension utilise un sous-ensemble qui existe sur les deux : browser.tabs, browser.tabGroups, browser.storage, browser.action / browser.browserAction, browser.notifications, browser.scripting.
Stockage
Section intitulée « Stockage »| Backend | Contenu |
|---|---|
browser.storage.local | Règles de domaine, paramètres, sessions (pinned, active, archived), workspaces, catégories, préférences UI (état déplié, etc.) |
browser.storage.session | Carte profil-fenêtre, brouillons de session, garde anti-réentrance d’édition |
Aucun cookie. Aucune requête réseau autre que celles du navigateur lui-même.
Architecture en bref
Section intitulée « Architecture en bref »Voir Architecture pour un pointeur sur les entry points, les modules background et les hooks centraux.
Contribuer
Section intitulée « Contribuer »Le dépôt accueille les contributions. Les conventions du projet (logger, accessibilité, i18n, Storybook, style d’écriture) sont décrites dans CLAUDE.md. Les guidelines pour ajouter un pack ou un preset vivent dans src/data/packs/README.md et public/data/presets.json.