judu/re-group-firefox-addonpublic Fork
⑂ main
Commits
⬇ Clone ▾
git clone https://git.rickub.com/judu/re-group-firefox-addon.git
git clone ssh://git@rickub.com/judu/re-group-firefox-addon.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
Improve ci and readme 8b27c3cUnverified · on main · Julien Durillon · Jun 4, 2026
README.md

re:group

Extension Firefox (cible 151+) qui range automatiquement les onglets dans des
groupes prédéfinis selon des expressions régulières sur les URLs.

La spécification complète du comportement est dans SPEC.md.

Fonctionnement

  • Tu définis des groupes (nom + couleur + liste de regexp) dans la page de
    configuration.
  • Quand un onglet (http/https, non épinglé) charge une URL qui matche les regexp
    d'un groupe, il est placé dans ce groupe.
  • En cas de match multiple, gagne la regexp dont la sous-chaîne matchée est la
    plus longue
    .
  • Si tu déplaces un onglet à la main, l'extension respecte ton choix jusqu'à ce que
    l'URL change vers un autre groupe.
    • Le bouton "réorganiser" ne respecte pas ton choix manuel, par contre. Ça remettra ton
      onglet dans son groupe.
  • Les onglets qui ne matchent rien ne sont jamais retirés d'un groupe.
  • Les groupes sont par fenêtre ; les groupes vides sont supprimés par Firefox.

Structure

manifest.json        Manifest V3, perms : tabs / tabGroups / storage
background.js         Point d'entrée (event page) → branche les listeners
src/matcher.js        Logique pure URL → groupe (testable hors navigateur)
src/config.js         Modèle + persistance (storage.local), validation
src/state.js          État runtime (storage.session) : instances, override
src/grouper.js        Moteur : placement, déplacement, ré-organisation
src/i18n.js           Helper i18n + applicateur DOM (data-i18n)
options/              Page de configuration (HTML/CSS/JS vanilla)
_locales/             Traductions (fr par défaut, en)
test/                 Tests unitaires du matcher (node --test)

Langues

L'interface est traduite via l'API i18n des WebExtensions (_locales/fr et
_locales/en). Firefox choisit la langue selon la langue de son interface, avec
fr comme langue par défaut (default_locale). Pour ajouter une langue, créer
_locales/<code>/messages.json en copiant les clés d'un fichier existant.

Développement

Lancer Firefox avec l'extension chargée (rechargement à chaud) :

npx web-ext run

Ou charger manuellement : about:debugging → Ce Firefox → Charger un module
complémentaire temporaire
→ choisir manifest.json.

Vérifier

node --test test/matcher.test.mjs   # tests de la logique de matching
npx web-ext lint --self-hosted      # validation du manifest / des APIs

Distribution

Signature privée (« unlisted ») via AMO :

npx web-ext sign --channel=unlisted --api-key=… --api-secret=…