Releases: mtfkarukera/magic-threads
Releases · mtfkarukera/magic-threads
Release list
v2.5.3
Journal des modifications
Toutes les modifications notables de Magic Threads sont documentées dans ce fichier.
Le format est basé sur Keep a Changelog,
et ce projet adhère au Versionnage Sémantique.
[2.5.3] - 2026-07-31
Modifié
- Compatibilité Thunderbird 153+ : Relevé de
strict_max_versionde152.*à154.*dansmanifest.jsonsuite à la sortie de Thunderbird 153 (résolution du blocage d'installation sur Thunderbird 153.0.1).
[2.5.2] - 2026-06-27
Corrigé
- Sélection intra-dossier robuste (background.js) : Application systématique du délai de sécurité de 250 ms et de la boucle de retry de sélection pour les e-mails envoyés récents, y compris lorsque la navigation s'effectue au sein du même dossier (ex : clics successifs dans "Messages envoyés"), résolvant définitivement les cas de page blanche lors du premier clic.
Modifié
- Documentation : Mise à jour de
README.md(fonctionnalité de dédoublonnage intelligent) et deARCHITECTURE.md(section Résilience de la sélection, dédoublonnage Gmail, correction des diagrammes Mermaid). - Dépôt : Retrait de
JUSTIFICATION_ATN.mddu suivi Git (fichier conservé localement, ajouté au.gitignore).
[2.5.1] - 2026-06-27
Corrigé
- Robustesse & Dédoublonnage Gmail :
- Dédoublonnage robuste : normalisation de la détection du dossier virtuel Tous les messages (Gmail All Mail) indépendamment de la casse, avec support étendu de plus de 20 langues (dont l'espagnol, l'allemand, l'italien, etc.) et traitement correct des paramètres de requête et slashs terminaux dans glodaApi.js.
- Préservation du snippet : fiabilisation de la logique de fusion de messages de glodaApi.js pour conserver le snippet indexé de l'email quelle que soit la copie analysée.
- Sélection résiliente : implémentation d'une boucle de retry avec tolérance temporelle (jusqu'à 10 essais sur 500 ms) dans background.js pour garantir la sélection effective du message après changement de dossier dans la vue 3-pane.
- Accessibilité & Contraste WCAG AA :
- Rehausse du contraste de la couleur du dossier Envoyé (
--sent-text) en mode clair (de#2f855aà#276f4asur fond#f0fff4, atteignant un contraste conforme de 6,1:1). - Rehausse du contraste du texte secondaire (
--text-muted) en mode sombre (de#8a93a3à#8d98a9sur fond#282c34, atteignant un contraste conforme de 4,7:1). - Rétablissement de la continuité de navigation au clavier : le message courant est désormais focusable (
tabIndex="0") et déclaré comme un bouton inactif (role="button",aria-disabled="true"), supprimant la rupture de tabulation au sein de la liste. - Amélioration des options : ajout d'associations explicites
<label for="...">pour tous les boutons radio de la page de préférences. - Sémantique du tri : association de la description globale de tri au groupe d'options (
aria-describedbysur le<fieldset>parent). - Retour vocal sur l'en-tête du fil : ajout d'une zone
aria-live="polite"sur l'indicateur de mode et liaison viaaria-describedbysur le bouton de configuration ⚙️. - Ajout de la liaison
aria-controlsreliant le bouton de repli (▼) à la liste de discussion.
- Rehausse du contraste de la couleur du dossier Envoyé (
[2.5.0] - 2026-06-27
Ajouté
- Accessibilité & Sémantique :
- Rehausse du contraste du badge Archive en mode clair (valeur
#8f5700sur fond#fefcbfconforme WCAG AA à 5,1:1). - Ajout des rôles structurels de titre
role="heading"etaria-level="2"au titre du fil de discussion. - Ajout d'attributs
aria-labeldescriptifs sur les boutons emoji d'en-tête (Configuration et Réduction). - Intégration des attributs de séparation ARIA (
role="separator",aria-orientation,aria-valuemin,aria-valuemaxetaria-valuenowdynamique) sur la poignée de redimensionnement pour l'accessibilité au clavier. - Liaison des boutons radio de configuration à leurs descriptions textuelles respectives via
aria-describedbydans la page d'options.
- Rehausse du contraste du badge Archive en mode clair (valeur
Corrigé
- Discussions groupées (vue 3-pane) : Élargissement de l'écouteur
messageDisplay.onMessageDisplayedà tous les onglets pour résoudre l'absence d'affichage du panneau lors de l'expansion d'une discussion groupée dans la vue principale. - Robustesse & Dédoublonnage Gmail :
- Implémentation du dédoublonnage intelligent dans
glodaApi.js: normalisation des Message-IDs (chevrons et espaces) et filtrage prioritaire des dossiers Gmail (les dossiers spécifiques comme Envoyés ou Boîte de réception priment sur le dossier virtuel global Tous les messages). - Protection contre la faille d'injection de sélecteurs CSS dans
options.jspar validation des préférences par rapport à une liste blanche (ALLOWED_VALUES). - Résolution de la race condition inter-dossiers (page blanche sous Linux ESR) : le délai de sécurité de 250 ms n'est désormais appliqué qu'aux e-mails envoyés de moins de 5 minutes.
- Implémentation du dédoublonnage intelligent dans
[2.4.1] - 2026-06-22
Modifié
- Compatibilité Thunderbird 152 : Relevé de
strict_max_versionde151.*à152.*dansmanifest.jsonsuite à la sortie de Thunderbird 152.
[2.4.0] - 2026-06-13
Phase 4 du plan d'action (pérennité & publication). Aucun changement de comportement utilisateur : refactoring interne, outillage, documentation et préparation de soumission.
Ajouté
- Conception de l'après-Gloda (
CONCEPTION_POST-GLODA.md) : résolveur de fil à trois étages derrièrethreadResolver.js(Gloda → Experiment API sans Gloda viansIMsgThread/References→ filet 100 % WebExtension prêt MV3). Module de référence non câblébackground/threadResolverFallback.js. Veille Panorama : pas de retrait imminent de Gloda. - Justification ATN (
JUSTIFICATION_ATN.md) : argumentaire des deux Experiment APIs pour le relecteur Mozilla (pourquoi elles ne sont pas remplaçables par le SDK standard), avec résumé anglais prêt à coller. - Veille de compatibilité (
VEILLE_COMPATIBILITE.md) : checklist par beta/ESR (points d'appui DOM, Gloda, 3 modes), anticipation MV3. - Config ESLint « flat » (
eslint.config.js) +package.jsonde dev (outillage uniquement, exclu du XPI) : prêt pour ESLint 9, coexiste avec.eslintrc.json.
Modifié
- Refactoring de
magicThreadsWindowApi.js: feuilles de style hissées en constantes de module (SHARED_CSS/BOTTOM_CSS/SIDEBAR_CSS), construction d'un item de fil factorisée enbuildThreadItem(), magic numbers nommés (SIDEBAR_DEFAULT_WIDTH,BOTTOM_DEFAULT_HEIGHT,PANEL_Z_INDEX). Lisibilité accrue, risque de récidive du bug de portée réduit. build.sh: extraction de version robuste (parsing JSON via node, repli grep/sed ne confondant plusversionetmanifest_version).- Documentation alignée sur le code :
ARCHITECTURE.md(GlodagetMessageCollectionForHeadersau lieu deGlodaMsgSearcher, deux écouteurs réels, trois chemins de navigation, retrait de l'option « gauche » 3-pane),AGENTS.md(onMessagesDisplayOffinexistant corrigé),CHANGELOG(« beside » corrigé).
[2.3.0] - 2026-06-13
Accessibilité et i18n issus de la phase 3 du plan d'action.
Ajouté
- Navigation clavier du panneau : les messages du fil sont focusables (Tab) et activables à Entrée/Espace (
role="list"/listitem/button,aria-currentsur le message affiché), anneau de focus visible (:focus-visible) sur les items, les boutons d'en-tête et la poignée — qui se pilote désormais aussi aux flèches du clavier (role="separator", pas de 16 px). - Avertissement Gloda : si la recherche globale est désactivée dans Thunderbird, la page d'options affiche un bandeau d'alerte (
role="alert", nouvelle fonctionconvGloda.isGlodaAvailable) au lieu de laisser l'extension silencieusement inerte. - État « non lu » accessible : libellé annoncé aux lecteurs d'écran (clé i18n
unreadLabel, 7 locales) en complément du point rouge ;aria-expandedsur le bouton réduire/déplier.
Corrigé
- Contrastes WCAG AA : palette du panneau adossée aux variables de thème Thunderbird (
--layout-*,--color-accent-primary) avec fallbacks relevés à ≥ 4,5:1 (--text-muted:#5a6675clair /#8a93a3sombre). - Traductions : es/pt « anticroonológico » → « anticronológico », « Archivos »/« Arquivos » (faux-sens) → « Archivados »/« Arquivadas » ; vi : « luồng » unifié en « chuỗi », « thẻ gốc mới » reformulé ; libellés de secours (
DEFAULT_LABELS) passés en anglais. - Page d'options : groupes de radios en
<fieldset>/<legend>, confirmation d'enregistrement annoncée (role="status"), couleurs codées en dur remplacées par les couleurs système (lisible en thème sombre).
Modifié
- Manifest : déclaration
data_collection_permissions: ["none"](aucune collecte de données) requise par les linters récents.
[2.2.2] - 2026-06-13
Corrigé
- Compteur de fil dépendant du point d'entrée : les en-têtes
Referencesne pointant que vers les ancêtres, la réunification 2.2.1 pouvait rester partielle selon le message cliqué (17 vs 63 sur le même fil, typiquement depuis un transfert dans Envoyés). Le fil localnsIMsgThreadest désormais absorbé pour chaque message ramené — et non plus seulement pour le message cliqué — ce qui relie les branches dans les deux sens (ancêtres ET descendants). Passes d'expansion portées de 3 à 4.
[2.2.1] - 2026-06-13
Corrigé
- Fil incomplet (conversations Gloda fragmentées) : Gloda affecte la conversation à l'indexation et ne fusionne jamais rétroactivement — une même chaîne de réponses pouvait être éclatée en plusieurs conversations (indexation dans le désordre, reconstruction d'index), et le panneau n'affichait alors qu'un ...
Release v2.5.2
Corrigé
- Sélection intra-dossier robuste (background.js) : Application systématique du délai de sécurité de 250 ms et de la boucle de retry de sélection pour les e-mails envoyés récents, y compris lorsque la navigation s'effectue au sein du même dossier, résolvant définitivement les cas de page blanche lors du premier clic.
Note historique (v2.5.0 & v2.5.1)
Cette version consolide également les travaux des Sprints 1 et 2 :
- Accessibilité & Contraste WCAG AA (contrastes dossiers et textes sourds réhaussés, continuité de focus clavier du message lu, formulaires et descriptions ARIA).
- Dédoublonnage Gmail multilingue (22 langues supportées, préservation dynamique des snippets Gloda).
v2.4.1
[2.4.1] - 2026-06-22
Modifié
- Compatibilité Thunderbird 152 : Relevé de
strict_max_versionde151.*à152.*dansmanifest.jsonsuite à la sortie de Thunderbird 152.
[2.4.0] - 2026-06-13
Phase 4 du plan d'action (pérennité & publication). Aucun changement de comportement utilisateur : refactoring interne, outillage, documentation et préparation de soumission.
Ajouté
- Conception de l'après-Gloda (
CONCEPTION_POST-GLODA.md) : résolveur de fil à trois étages derrièrethreadResolver.js(Gloda → Experiment API sans Gloda viansIMsgThread/References→ filet 100 % WebExtension prêt MV3). Module de référence non câblébackground/threadResolverFallback.js. Veille Panorama : pas de retrait imminent de Gloda. - Justification ATN (
JUSTIFICATION_ATN.md) : argumentaire des deux Experiment APIs pour le relecteur Mozilla (pourquoi elles ne sont pas remplaçables par le SDK standard), avec résumé anglais prêt à coller. - Veille de compatibilité (
VEILLE_COMPATIBILITE.md) : checklist par beta/ESR (points d'appui DOM, Gloda, 3 modes), anticipation MV3. - Config ESLint « flat » (
eslint.config.js) +package.jsonde dev (outillage uniquement, exclu du XPI) : prêt pour ESLint 9, coexiste avec.eslintrc.json.
Modifié
- Refactoring de
magicThreadsWindowApi.js: feuilles de style hissées en constantes de module (SHARED_CSS/BOTTOM_CSS/SIDEBAR_CSS), construction d'un item de fil factorisée enbuildThreadItem(), magic numbers nommés (SIDEBAR_DEFAULT_WIDTH,BOTTOM_DEFAULT_HEIGHT,PANEL_Z_INDEX). Lisibilité accrue, risque de récidive du bug de portée réduit. build.sh: extraction de version robuste (parsing JSON via node, repli grep/sed ne confondant plusversionetmanifest_version).- Documentation alignée sur le code :
ARCHITECTURE.md(GlodagetMessageCollectionForHeadersau lieu deGlodaMsgSearcher, deux écouteurs réels, trois chemins de navigation, retrait de l'option « gauche » 3-pane),AGENTS.md(onMessagesDisplayOffinexistant corrigé),CHANGELOG(« beside » corrigé).
v2.3.0
Accessibilité et i18n issus de la phase 3 du plan d'action.
Ajouté
- Navigation clavier du panneau : les messages du fil sont focusables (Tab) et activables à Entrée/Espace (
role="list"/listitem/button,aria-currentsur le message affiché), anneau de focus visible (:focus-visible) sur les items, les boutons d'en-tête et la poignée — qui se pilote désormais aussi aux flèches du clavier (role="separator", pas de 16 px). - Avertissement Gloda : si la recherche globale est désactivée dans Thunderbird, la page d'options affiche un bandeau d'alerte (
role="alert", nouvelle fonctionconvGloda.isGlodaAvailable) au lieu de laisser l'extension silencieusement inerte. - État « non lu » accessible : libellé annoncé aux lecteurs d'écran (clé i18n
unreadLabel, 7 locales) en complément du point rouge ;aria-expandedsur le bouton réduire/déplier.
Corrigé
- Contrastes WCAG AA : palette du panneau adossée aux variables de thème Thunderbird (
--layout-*,--color-accent-primary) avec fallbacks relevés à ≥ 4,5:1 (--text-muted:#5a6675clair /#8a93a3sombre). - Traductions : es/pt « anticroonológico » → « anticronológico », « Archivos »/« Arquivos » (faux-sens) → « Archivados »/« Arquivadas » ; vi : « luồng » unifié en « chuỗi », « thẻ gốc mới » reformulé ; libellés de secours (
DEFAULT_LABELS) passés en anglais. - Page d'options : groupes de radios en
<fieldset>/<legend>, confirmation d'enregistrement annoncée (role="status"), couleurs codées en dur remplacées par les couleurs système (lisible en thème sombre).
Modifié
- Manifest : déclaration
data_collection_permissions: ["none"](aucune collecte de données) requise par les linters récents.
v2.2.2
Corrigé
- Compteur de fil dépendant du point d'entrée : les en-têtes
Referencesne pointant que vers les ancêtres, la réunification 2.2.1 pouvait rester partielle selon le message cliqué (17 vs 63 sur le même fil, typiquement depuis un transfert dans Envoyés). Le fil localnsIMsgThreadest désormais absorbé pour chaque message ramené — et non plus seulement pour le message cliqué — ce qui relie les branches dans les deux sens (ancêtres ET descendants). Passes d'expansion portées de 3 à 4.