尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Free extension to correct in your inputs
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Correcteur d’orthographe et de grammaire libre, gratuit et 100 % local pour le navigateur. FreeCorrector souligne les fautes directement dans les champs de texte des sites web, comme le font les correcteurs du commerce, mais sans abonnement, sans compte et sans envoyer une seule ligne de vos textes sur Internet : toute l’analyse tourne dans votre navigateur. ➜ Installer FreeCorrector pour Firefox (addons.mozilla.org) · Site officiel : lapigeonnerie.fr/freecorrector查看完整 README ↗
Correcteur d’orthographe et de grammaire libre, gratuit et 100 % local pour le navigateur.
FreeCorrector souligne les fautes directement dans les champs de texte des sites web, comme le font les correcteurs du commerce, mais sans abonnement, sans compte et sans envoyer une seule ligne de vos textes sur Internet : toute l’analyse tourne dans votre navigateur.
➜ Installer FreeCorrector pour Firefox (addons.mozilla.org) · ➜ pour Chrome, Edge et Brave (Chrome Web Store) · ➜ pour Thunderbird (addons.thunderbird.net) · Site officiel : lapigeonnerie.fr/freecorrector
<textarea>, les champs texte et les éditeurs riches
(contenteditable : Gmail, Outlook, Discord, Notion…)
connect-src 'self')
interdit au navigateur toute requête vers Internet depuis l’extensionLes moteurs de correction sont Grammalecte, le correcteur grammatical libre de référence pour le français, et Harper pour l’anglais (WebAssembly). FreeCorrector ajoute par-dessus ses propres règles et son classement des suggestions.
| Navigateur | Paquet | Store |
|---|---|---|
| Firefox 140+ | dist/freecorrector-<version>-firefox.zip | addons.mozilla.org ✅ publié |
| Chrome, Edge, Brave, Vivaldi (116+) | dist/freecorrector-<version>-chromium.zip | Chrome Web Store ✅ publié |
| Opera | dist/freecorrector-<version>-chromium.zip | Opera add-ons (en cours de validation) |
| Thunderbird 140+ (fenêtre de rédaction) | dist/freecorrector-<version>-thunderbird.zip | addons.thunderbird.net ✅ publié |
| Safari | à convertir sur macOS avec Xcode (xcrun safari-web-extension-converter dist/chromium) | App Store |
Les paquets se construisent avec Node.js (aucune dépendance) :
npm run build # ou : node scripts/build.js [firefox|thunderbird|chromium]
Sous Chromium, l’arrière-plan d’une extension MV3 est un service worker, qui ne peut pas lancer
de Web Worker : le moteur y tourne dans un document hors écran (src/chromium/). Sous Firefox, il
tourne directement dans la page d’arrière-plan. Le reste du code est commun.
Thunderbird reprend l’arrière-plan de Firefox. Il n’y a pas de pages web à corriger : les scripts
de contenu sont enregistrés dans la fenêtre de rédaction des messages (src/thunderbird/). Là,
le calque des soulignements vit dans une shadow root du <body> : Thunderbird envoie tout le
document, y compris ce qui suit <body>, mais jamais le contenu d’une shadow root. La citation
d’une réponse, la ligne « X a écrit : » et la signature ne sont pas corrigées.
Firefox (140 ou plus récent) :
about:debugging#/runtime/this-firefoxsrc/manifest.json (ou dist/firefox/manifest.json)Le module reste chargé jusqu’à la fermeture de Firefox. Après une modification du code, cliquer
sur Recharger dans about:debugging.
Chrome, Edge, Brave, Opera, Vivaldi :
npm run buildchrome://extensions (ou edge://extensions, brave://extensions…)dist/chromiumThunderbird (140 ou plus récent) :
node scripts/build.js thunderbirddist/thunderbird/manifest.jsonEnsuite, cliquer sur l’icône FreeCorrector puis Page de test, ou aller sur n’importe quel
site et cliquer dans un champ de texte. Les fichiers locaux (file://) ne sont pas corrigés :
les navigateurs n’y injectent pas les extensions par défaut.
Avec Node.js, web-ext permet de lancer un Firefox de test
qui recharge l’extension automatiquement, et de valider le paquet Firefox :
npx web-ext run --source-dir src
npx web-ext lint --source-dir dist/firefox
src/
manifest.json Manifest V3 (base Firefox ; adapté pour Chromium au build)
background.js Arrière-plan Firefox
chromium/ Arrière-plan Chromium : service worker + document hors écran
thunderbird/compose.js Thunderbird : scripts de contenu dans la fenêtre de rédaction
engine/
host.js Pilote les moteurs (workers), répartit les paragraphes par langue
language.js Détection français / anglais par paragraphe
english.js Moteur anglais (Harper) : conversion, classement, règles
english-rules.js Règles maison anglaises (your/you're, loose/lose, contractions…)
english-worker.js Worker (module ES) du moteur anglais
grammalecte-worker.js Fait tourner Grammalecte dans un Web Worker
suggestions.js Reclasse les suggestions selon le contexte
rules.js Règles maison : homophones et accords que Grammalecte rate
sentence-rules.js Majuscule en début et ponctuation en fin de phrase
data/ Fréquence des 50 000 mots français et anglais les plus courants
content/ Scripts injectés dans les pages
field.js Base commune des champs + textarea/input (calque miroir)
rich-field.js Éditeurs riches contenteditable (soulignements par Range)
ui.js Shadow DOM : bulle de suggestions et panneau des fautes
styles.js CSS du shadow DOM
main.js Détection des champs, réglages
popup/ Menu de la barre d’outils
options/ Page d’options
lib/ Réglages et styles partagés
editor/ Page « Correcteur » : grande zone de texte et liste des fautes
demo/demo.html Page de test avec des fautes (développement uniquement : absente des
paquets publiés, le bouton du menu n’apparaît qu’en développement)
vendor/grammalecte/ Moteur Grammalecte 2.3.0 (sous-ensemble non modifié)
vendor/harper/ Moteur Harper 2.10.0 (harper.js, binaire WebAssembly)
scripts/build.js Construit dist/firefox, dist/thunderbird et dist/chromium (+ zips pour les stores)
tests/
run.js Fait tourner le moteur sous Node et le note sur les corpus
fr-corpus.js Corpus de fautes courantes (homophones, accords, accents…)
fr-holdout.js Second corpus, pour vérifier que les réglages se généralisent
en-corpus.js Corpus de fautes anglaises courantes
fr-blind.js, en-holdout.js Corpus écrits après les réglages, pour une mesure honnête
fr-blind2-4.js, en-blind2-4.js Corpus écrits avant chaque nouvelle passe de réglages
clean-messages.js Messages du quotidien corrects : aucune alerte ne doit sortir
stress.mjs Textes extrêmes : pas de plantage, pas de lenteur
Le script de contenu s’attache à chaque champ texte que l’utilisateur sélectionne. Il superpose au
champ un « miroir » : une copie transparente du texte, avec la même police, les mêmes marges et le
même défilement, dans laquelle chaque faute est entourée d’un <span> souligné. Le texte du champ
reste intact, le miroir ne capte pas la souris. Tout vit dans un shadow DOM fermé, donc le CSS des
sites ne le touche pas.
Après une pause de frappe (600 ms), le texte est envoyé au script d’arrière-plan, qui le transmet à Grammalecte dans un Web Worker. Les positions renvoyées (en indices UTF-16) correspondent directement à la valeur du champ. Pendant la frappe, les soulignements existants sont décalés plutôt qu’effacés, pour éviter le clignotement.
Les suggestions sont ensuite reclassées selon le contexte (src/engine/suggestions.js). Chaque
candidat est remis dans la phrase, où les fautes précédentes sont déjà corrigées, et la phrase
est revérifiée. Les candidats qui ne laissent plus de faute passent en tête, puis ceux qui se
prononcent comme le mot tapé. Pour les verbes, les formes homophones sont ajoutées aux
candidats : « je vien te parlé » donne « viens », puis « parler », et « il faut que tu vien »
donne « viennes ». Une faute qui n'existait qu'à cause d'une faute précédente n'est plus
signalée : dans « il ma dit », seul « ma » est souligné.
Deux règles de phrase complètent Grammalecte (src/engine/sentence-rules.js). La première
signale un paragraphe qui commence par une minuscule. La seconde signale un paragraphe d'au moins
trois mots sans ponctuation finale, et propose « . », « ! » ou « ? », avec « ? » en premier pour
une question. Le point manquant n'est pas signalé tant que le curseur est en fin de phrase,
pour ne pas gêner la frappe. Ces deux règles ne s'appliquent jamais aux champs de recherche, et
une option permet de les désactiver.
Les corrections passent par document.execCommand("insertText"), ce qui conserve l’historique
d’annulation (Ctrl+Z) et déclenche un vrai évènement input, compris par React, Vue, etc.
npm test (ou node tests/run.js) fait tourner le vrai moteur sur les corpus et affiche le taux
de fautes détectées, le taux de bonnes suggestions en première position et les fausses alertes
sur des phrases correctes. À lancer après chaque modification du moteur.
npm run stress (ou node tests/stress.mjs) soumet aux deux moteurs des textes extrêmes (émojis,
code, URL, paragraphe de 28 000 caractères, mot de 5 000 lettres, Unicode exotique) et vérifie
qu'aucun ne plante, ne place mal un soulignement ou ne dépasse son budget de temps.
node tests/lang.js vérifie la détection de la langue sur des textes courts : titres de tickets
en anglais sans mot outil (« Bodies list incoherent display »), français plein d'anglicismes.
contenteditable (Gmail, Outlook, Discord, Notion, éditeurs Quill, ProseMirror…)Créé par BenjiBurn.
FreeCorrector est un logiciel libre distribué sous licence GNU GPL v3 (voir LICENSE).
Il intègre Grammalecte © Olivier R., également sous GPL v3, sans modification
(src/vendor/grammalecte/), Harper © Automattic sous licence Apache 2.0 (src/vendor/harper/),
et la liste de fréquence
FrequencyWords de Hermit Dave, sous licence
CC BY-SA 4.0 (src/data/).