Spec — Extension Firefox « auto-group »
Objectif
Extension Firefox (cible 151+) qui range automatiquement les onglets dans
des groupes d'onglets pré-définis, selon des expressions régulières appliquées
sur les URLs.
Permissions
tabstabGroupsstorage
Pas davantage.
Modèle de configuration (page d'options)
- Liste de groupes pré-définis. Chaque groupe a :
- un nom ;
- une couleur (palette Firefox) ;
- une liste de regexp sur les URLs.
- Validation live des regexp : l'enregistrement est bloqué tant qu'une
regexp est invalide (message d'erreur clair à la saisie). - Les regexp sont insensibles à la casse par défaut (flag
i), testées en
match partiel (regex.test(url)) sur l'URL complète. - Export / import JSON de la configuration (backup, partage entre machines).
- Stockage de la config dans
storage.local. - Bouton « Ré-organiser maintenant » qui traite les onglets déjà ouverts à
la demande. Il vit dans la page de config (pas de popup toolbar).
Comportement de regroupement
- Déclenché sur toute navigation, y compris SPA (history.pushState, hash).
- Onglets épinglés ignorés. Si un onglet géré devient épinglé → il est
retiré du groupe et n'est plus géré. - Seulement les URLs http/https. Toute autre URL (
about:,file:,
moz-extension:,view-source:…) est ignorée — jamais groupée. - Conflit multi-match : si l'URL matche les regexp de plusieurs groupes,
gagne la regexp dont la sous-chaîne effectivement matchée est la plus
longue. - Onglet qui ne matche aucun groupe → ignoré, et jamais retiré d'un
groupe où il se trouverait déjà. - Onglet déjà dans un groupe dont l'URL change :
- si la nouvelle URL matche un autre groupe → déplacé vers ce groupe ;
- si la nouvelle URL ne matche aucun groupe → reste dans le groupe
actuel.
Multi-fenêtres
- Les groupes Firefox sont par fenêtre.
- Stratégie : un groupe par fenêtre, créé à la demande — le groupe d'une
config est instancié dans une fenêtre la première fois qu'un onglet de cette
fenêtre y matche. - Les onglets ne traversent pas les fenêtres ; chaque onglet rejoint
l'instance du groupe dans sa propre fenêtre. - Quand le dernier onglet quitte un groupe géré (fermé ou déplacé), le
groupe vide est supprimé. Il sera recréé à la demande au prochain match.
Override manuel
- Si l'utilisateur déplace un onglet manuellement (hors du groupe, ou vers un
autre groupe), l'extension respecte ce choix et ne re-déplace plus
l'onglet. - Cet override est levé lorsque l'URL de l'onglet change vers un nouveau
match (vers un groupe différent du groupe courant). - L'état d'override est stocké en
storage.session: il survit à la mise en
veille de l'event page (MV3), mais pas au redémarrage de Firefox. Pas de
re-tri automatique au démarrage.
Choix techniques
- Manifest V3, background non-persistant (event page).
- Vanilla JS / HTML / CSS, sans étape de build.
- État volatile (override manuel) en
storage.session. - Distribution : signée via AMO en "unlisted" (installation privée durable,
sans publication publique).
Point à confirmer
- Condition exacte de reset de l'override : interprétée comme « l'override
saute dès que l'URL change et matche un groupe différent du groupe
courant » (un re-match vers le même groupe ne fait rien). À valider à
l'implémentation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|