Skip to main content

Bokoli


Etambwisi ya Bokeli

Edit English only; translations propagate

Bongisa na Lingelesi kaka na se ya website/docs. Bobongoli na se ya website/i18n/<locale>/… esalemaka na ndenge ya otomatik mpe esengeli te kobongisama na maboko. Salela misala ya bobongoli (ndakisa, make translate_web_docs_batch) mpo na kosukisa lisusu makomi ya lokálɛ.

Biloko esengeli liboso

  • Node.js 22+ mpe npm (eyekolami na Node 22)
  • Thunderbird 128 ESR to ya sika koleka (mpo na komeka na maboko)

Etando ya Projɛ (na boye ya likoló)

  • Rasin: script ya kopakola distribution_zip_packer.sh, mikanda, bafoto ya écran
  • sources/: kɔdɛ ya mokapo ya add‑on (background, options/popup UI, manifests, icons)
  • tests/: suite ya Vitest
  • website/: mikanda ya Docusaurus (na i18n na se ya website/i18n/de/...)

Kotiá mpe Bisaleli

  • Kotiá ba deps ya rasin: npm ci
  • Mikanda (ya kopona): cd website && npm ci
  • Koyeba ba target: make help

Bokeli na bomoi (web‑ext run)

  • Loop ya mbangumangu na Firefox Desktop (ba smoke‑tests ya UI kaka):
  • npx web-ext run --source-dir sources --target=firefox-desktop
  • Kokima na Thunderbird (eleki malamu mpo na MailExtensions):
  • npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"
  • Banɔti:
  • Tikala kofungola Error Console ya Thunderbird (Tools → Developer Tools → Error Console).
  • Ba lokasa ya likambo ya MV3 ebotamaka ntango ezali na posa te; zongisa add‑on sima ya kobongola kɔdɛ, to tika web‑ext e‑reload otomatik.
  • Bameseno mosusu oyo ezali kaka na Firefox ekeseni; tala ntango nyonso na Thunderbird mpo na kolanda API malamu.
  • Banzela ya binaire ya Thunderbird (bandakisa):
  • Linux: thunderbird (ndakisa, /usr/bin/thunderbird)
  • macOS: /Applications/Thunderbird.app/Contents/MacOS/thunderbird
  • Windows: "C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
  • Kobotola profili: Salela profili mosusu ya Thunderbird mpo na bokeli mpo ete esimba te bokatoli ya mokolo na mokolo.

Ba Target ya Make (na alfabeti)

Makefile ebongisi ndenge ya misala ya bokeli ya ndakisa. Kanga make help na ntango nyonso mpo na maloba ya mokuse ya target moko na moko.

Lelɔmba: kokimisa make na boye te ya target efungola menu ya pete ya Whiptail mpo na kopona target.

TargetMaloba ya mokuse ya maloba moko
cleanLongola biloko ya batongi/preview ya lokalɛ (tmp/, web-local-preview/, website/build/).
commitFormatɛ, sambisa ba test (ekɔtisi i18n), bɔtɔla changelog, commit & push.
eslintSambisa ESLint na nzela ya flat config (npm run -s lint:eslint).
helpLakisa ba target nyonso na maloba moko ya mokuse (epɔnisami).
lintweb‑ext lint na sources/ (manifest ya ntango moke; ebwaka ZIP; non‑fatal).
menuMenu ya kosolola mpo na kopona target mpe ba argument ya kopona.
packBɔtɔla ATN & LOCAL ZIPs (ebetaka linter; ebenga script ya packer).
prettierFormatɛ depɔ na esika (ekomisaka bambongwana).
prettier_checkPrettier na mode ya kotalela (ekomi te); eyebuka soki esengeli kofomate lisusu.
prettier_writeAlias mpo na prettier.
testPrettier (ekomi), ESLint, sima Vitest (couverture soki econfigurami).
test_i18nBa test ya i18n kaka: ba placeholders/parite ya add‑on + parite ya website.
translate_appAlias mpo na translation_app.
translation_appBobongola baloba ya UI ya app uta sources/_locales/en/messages.json.
translate_web_docs_batchBobongola mikanda ya website na OpenAI Batch API (eleki malamu).
translate_web_docs_syncBobongola mikanda ya website na ndenge ya synchronisé (ancien, non-batch).
translate_web_indexAlias mpo na translation_web_index.
translation_web_indexBobongola UI ya homepage/navbar/footer (website/i18n/en/code.json → .../<lang>/code.json).
web_buildBɔtɔla mikanda na website/build (esungi --locales / BUILD_LOCALES).
web_build_linkcheckKotalela ba lien na offline‑safe (ebwaka HTTP[S] ya libanda).
web_build_local_previewPreview ya gh‑pages lokalɛ; auto‑serve na 8080–8090; ba test/link‑check ya kopona.
web_push_githubPusa website/build na branche gh-pages.

Syntaxe ya ba options

  • Salela make <command> OPTS="…" mpo na kopesa ba options (banani “quotes” esengeli). Target moko na moko awa na nse ezali na ndakisa ya bosaleli.

--

Banɔti ya kotonga na lokále

  • Tɔnga ndambo ya ba locale: tía BUILD_LOCALES="en de" to pesa OPTS="--locales en,de" na ba target ya web.
  • Preview ya lokále moko: http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.

Kobaka mpe Kopakola

  • Kobotola ZIPs: make pack
  • Epɛtɔli ATN mpe LOCAL ZIPs na motó ya depɔ (kobongola mabongisi ya biloko te na maboko)
  • Lelɔmba: bɔtɔla version na nse ya sources/manifest_ATN.json mpe sources/manifest_LOCAL.json liboso ya kopakola
  • Kotiá na maboko (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → pona ZIP oyo obɔtɔli

Esɛ́yi

  • Suite mobimba: make test (Vitest)
  • Couverture (ya kopona):
  • npm i -D @vitest/coverage-v8
  • Kima make test; fungola coverage/index.html mpo na rapɔ ya HTML
  • i18n kaka: make test_i18n (ba clés ya UI/placeholders/titles + parite ya website po na lokále moko na mikanda moko elongo na kotalela id/title/sidebar_label)

Kosakola Mabunga & Ba Logs

  • Error Console: Tools → Developer Tools → Error Console
  • Bobongola logs ya mingi na tango ya kosala:
  • Kobongola: messenger.storage.local.set({ debug: true })
  • Kofina: messenger.storage.local.set({ debug: false })
  • Ba logs emonanaka na tango ya kokomisa/kotinda biyano

Mikanda (website)

  • Server ya dev: cd website && npm run start
  • Botongi site statik: cd website && npm run build
  • Ba Make oyo ekokanaka (na alfabeti): make web_build, make web_build_linkcheck, make web_build_local_preview, make web_push_github
  • Bandakisa ya bosaleli:
  • EN kaka, bɔtola ba tests/link‑check, kozongisa te: make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run"
  • Ba locale nyonso, elongo na ba tests/link‑check, sima pusa: make web_build_local_preview && make web_push_github
  • Liboso ya kobimisa, sambisa link check ya offline‑safe: make web_build_linkcheck.
  • i18n: Lingelesi ezali na website/docs/*.md; bobongoli ya Alémani ezali na website/i18n/de/docusaurus-plugin-content-docs/current/*.md
  • Boluki: Soki bakoki ya environnement ya Algolia DocSearch batiami na CI (DOCSEARCH_APP_ID, DOCSEARCH_API_KEY, DOCSEARCH_INDEX_NAME), site esalelaka boluki ya Algolia; soki te, ezongaka na boluki ya lokalɛ. Na homepage, finá / to Ctrl+K mpo na kofungola kaxa ya boluki.

  • website/src/pages/donate.js
  • Nzela: /donate (mpe /<locale>/donate)
  • Bizaleli:
  • Soki nzela ya sikoyo ezali na lokále (ndakisa, /de/donate), salela yango
  • Soki te, pona oyo eleki malamu kati ya navigator.languages mpe ba lokále oyo batiami; zongela na lokále ya ndakisa soki ezali te
  • Ezongisaka na:
  • en/docs/donation
  • misusu → /<locale>/docs/donation
  • Esalelaka useBaseUrl mpo na bobateli ya malamu ya baseUrl
  • Ezali na meta refresh + lien noscript lokola ndingisa ya nsima


Banɔti ya Preview

  • Kofina Node preview malamu: fungola http://localhost:<port>/__stop (epesamaka sima ya Local server started).
  • Soki bafoto eyebani te na MDX/JSX, salela useBaseUrl('/img/...') mpo na kokumisa baseUrl ya site.
  • Preview ebandaka liboso; link check esalemi sima mpe ezali te ya koboma mosala (ba lien ya libanda oyo ebuka ekotɛlɛma te preview).
  • URL ya preview ndakisa: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (epesamaka sima ya “Local server started”).
  • Ba lien ya libanda na link‑check: Ba site mosusu (ndakisa, addons.thunderbird.net) eboyaka ba crawlers ya otomatik mpe ekoki kopesa 403 na link checks. Preview ebandaka kaka; okoki kobwaka yango.

Bobongola Website

Oyo okoki kobongola

  • UI ya website kaka: homepage, navbar, footer, mpe bakundi ya UI mosusu. Makomi ya mikanda ekotikala Lingelesi kaka sik’oyo.

Esika ya kobongola

  • Bongisa website/i18n/<locale>/code.json (salela en lokola ndakisa). Tikala kokitisa te ba placeholders lokola {year}, {slash}, {ctrl}, {k}, {code1}.

Bimisa to sanzola bafile

  • Sala ba stubs oyo ezali te mpo na ba locale nyonso: npm --prefix website run i18n:stubs
  • Koma likolo ba stubs uta na Lingelesi (sima ya kobakisa biloba ya sika): npm --prefix website run i18n:stubs:force
  • Ndakisa mosusu mpo na lokále moko: npx --prefix website docusaurus write-translations --locale <locale>

Bobongola baloba ya UI ya homepage/navbar/footer (OpenAI)

  • Tía bala‑balangɛ moko (na shell to .env):
  • export OPENAI_API_KEY=sk-...
  • Ya kopona: export OPENAI_MODEL=gpt-4o-mini
  • Mbala moko (ba locale nyonso, kobwaka en): make translate_web_index
  • Kaba na ba locale moko: make translate_web_index OPTS="--locales de,fr"
  • Koma likolo bamemya oyo ezalaka: make translate_web_index OPTS="--force"

Kokanga & ba retry

  • Script ya bobongoli elɛngisaka forme ya JSON, ebátelaka ba placeholders na makɔngɔ, mpe etya ntembe ete ba URL babongwani te.
  • Soki validation ebuki, esilaka kosala lisusu na nzela ya mayele mbala mibale liboso ya kotika ba valɛr oyo ezalaka.

Talela lokále na yo

  • Server ya dev: npm --prefix website run start
  • Talá http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/

Kokɔtisa

  • Fungola PR na bafile code.json oyo obongoli. Tika mabongoli ezala moke mpe bakisa écran moko soki ekoki.

Bokengi & Banɔti ya Konfigurasyon

  • Kobakisa te sources/manifest.json (esalemaka na ntango moke na botongi)
  • Tika browser_specific_settings.gecko.id ezala ntango nyonso mpo na kobatela kanalɛ ya mise à jour

Botikalaki ya ba Paramɛtrɛ

  • Stockage: Ba paramɛtrɛ nyonso ya mosaleli ezali na storage.local mpe etikalaka na mikolo nyonso ya ba mise à jour ya add‑on.
  • Kotiá: Ba défaut esalemi kaka soki clé moko ezali mpenza na se (undefined).
  • Mise à jour: Migration etondi kaka ba clés oyo ezangi; ba valɛr oyo ezalaka ekomisamaka naino te.
  • Eloko ya kolakisa schéma: settingsVersion (sik’oyo 1).
  • Ba clés mpe ba défaut:
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • Kɔdɛ: tala sources/background.jsinitializeOrMigrateSettings() mpe SCHEMA_VERSION.

Mosala ya dev (kobakisa paramɛtrɛ ya sika)

  • Tombolisa SCHEMA_VERSION na sources/background.js.
  • Bakisa clé ya sika + défaut na eloko DEFAULTS na initializeOrMigrateSettings().
  • Salela mobeko ya “kaka soki ezali undefined” tango ozali kotya ba défaut; koma likolo te ba valɛr oyo ezalaka.
  • Soki paramɛtrɛ ezali monene mpo na mosaleli, bɛndá yango na sources/options.js mpe bakisa baloba ya lokálɛ.
  • Bakisa/tongola ba test (tala tests/background.settings.migration.test.js).

Banɔti ya komeka na maboko

  • Yoka lokolia install ya sika: pambola dosiye ya ba donɛ ya extension to yambo na profili ya sika.
  • Yoka mise à jour: tía settingsVersion na 0 na storage.local mpe zongisa; ndimisá ete ba valɛr oyo ezalaka ebongwani te mpe kaka ba clés oyo ezángaki nde bakɔtisami.

Kosilisa Makambo

  • Zala na ntembe te ete Thunderbird ezali 128 ESR to koleka
  • Salela Error Console mpo na makambo na tango ya kosala
  • Soki ba paramɛtrɛ ya kobomba emonanaka lokola ezali kosalela malamu te, zongisa Thunderbird mpe meka lisusu. (Thunderbird ekoki kobomba etat na ba session; kozongisa ezalaka kopesa paramɛtrɛ ya sika.)

CI & Couverture

  • GitHub Actions (CI — Tests) esambisaka vitest na ba seuil ya couverture (85% lignes/fonctions/branches/déclarations). Soki ba seuil ekokisami te, mosala ebukaka.
  • Workflow etindaka eloko coverage-html elongo na rapɔ HTML; telemisa yango uta na lokasa ya run (Actions → run ya suka → Artifacts).

Bokɔtisi mosala

  • Tala CONTRIBUTING.md mpo na mibeko ya branche/commit/PR
  • Lelɔmba: Salela profili mosusu ya développement ya Thunderbird mpo na komeka mpo na kobɛtɛla te profili ya mokolo na mokolo.

Bobongoli

  • Kosala misala minene ya bobongoli “nyonso → nyonso” ekoki kozala ntembe mpe ntalo. Banda na ndambo moke (ndakisa, mikanda mikomoko mpe ba locale 1–2), talá soki ezali malamu, sima limbolá.

  • Politiki ya retry: Misala ya bobongoli esalaka tii ba retry 3 na backoff exponentiel soki API ezongi na masolo; tala scripts/translate_web_docs_batch.js mpe scripts/translate_web_docs_sync.js.

Bafoto ya écran mpo na mikanda

  • Tya bafoto na website/static/img/.

  • Bandima yango na MD/MDX na nzela ya useBaseUrl('/img/<filename>') mpo na banzela esala malamu na baseUrl ya site.

  • Sima ya kobakisa to kobenga kombo ya bafoto na se ya website/static/img/, zala na ntembe te ete ba référence nyonso esalelaka naino useBaseUrl('/img/…') mpe emonanaka na preview ya lokalɛ. Favicons

  • favicon.ico ya ba tailles mingi esalemi otomatik na banzela nyonso ya botongi (Make + ba scripts) na nzela ya website/scripts/build-favicon.mjs.

  • Etapo ya maboko esengeli te; kobongola icon-*.png ezali kaka.

    Lelɔmba ya botali

  • Tika id ya front‑matter ebongwana te na mikanda ebongolami; bobongola kaka title mpe sidebar_label soki ezali.

clean

  • Sika: longola biloko ya botongi/preview ya lokalɛ.
  • Bosaleli: make clean
  • Elongolaka (soki ezali):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • Sika: formatɛ, test, bɔtɔla changelog, commit, mpe push.
  • Bosaleli: make commit
  • Makambo: ebɛtaka Prettier (ekomi), make test, make test_i18n; ebakisi changelog soki ezali na ba difu oyo batiami; epusaka na origin/<branch>.

eslint

  • Sika: sambisa ESLint na nzela ya flat config.
  • Bosaleli: make eslint

help

  • Sika: lakisa ba target nyonso na maloba moko ya mokuse.
  • Bosaleli: make help

lint

  • Sika: lint ya MailExtension na web-ext.
  • Bosaleli: make lint
  • Nɔti: ekopi‑mɛsɔ sources/manifest_LOCAL.jsonsources/manifest.json; ebwaka ZIPs oyo ebimi; ba warning ebukisaka te pipeline.

menu

  • Sika: menu ya kosolola mpo na kopona Make target mpe ba argument ya kopona.
  • Bosaleli: kima make na ba argument te.
  • Nɔti: soki whiptail ezali te, menu ezongeli make help.

pack

  • Sika: bɔtɔla ATN mpe LOCAL ZIPs (ezali na etamboli ya lint).
  • Bosaleli: make pack
  • Lelɔmba: tombolisa ba version na mabulu mibale sources/manifest_*.json liboso ya kopakola.

prettier

  • Sika: formatɛ depɔ na esika.
  • Bosaleli: make prettier

prettier_check

  • Sika: kotalela format (ekomi te).
  • Bosaleli: make prettier_check

prettier_write

  • Sika: alias mpo na prettier.
  • Bosaleli: make prettier_write

test

  • Sika: kima Prettier (ekomi), ESLint, sima Vitest (couverture soki kati).
  • Bosaleli: make test

test_i18n

  • Sika: ba test ya i18n na makambo ya baloba ya add‑on mpe mikanda ya website.
  • Bosaleli: make test_i18n
  • Esalaka: npm run test:i18n mpe npm run -s test:website-i18n.

translate_app / translation_app

  • Sika: bobongola baloba ya UI ya add‑on uta EN na ba locale mosusu.
  • Bosaleli: make translation_app OPTS="--locales all|de,fr"
  • Nɔti: ebátelaka forme ya ba clés mpe ba placeholders; etá na translation_app.log. Forme ya script: node scripts/translate_app.js --locales ….

translate_web_docs_batch / translate_web_docs_sync

  • Sika: bobongola mikanda ya website uta website/docs/*.md na website/i18n/<locale>/....
  • Eleki malamu: translate_web_docs_batch (OpenAI Batch API)
    • Bosaleli (ba flague): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Posisionel ancien ezwamaka naino: OPTS="<doc|all> <lang|all>"
  • Bizaleli: ebongisi JSONL, etindaka, etala na etuka 30s, ezwasaka ba nsima, ekomisaka bafile.
  • Nɔti: mosala ya batch ekoki kozwa tii mikolo 24 mpo esilisa (na ndakisa ya fenêtre ya batch ya OpenAI). Console ezali kolakisa ntango eleki na poll moko na moko.
  • Environnement: OPENAI_API_KEY (esengeli), ya kopona OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (defaut 24h), BATCH_POLL_INTERVAL_MS.
  • Ancien: translate_web_docs_sync
    • Bosaleli (ba flague): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Posisionel ancien ezwamaka naino: OPTS="<doc|all> <lang|all>"
  • Bizaleli: basɛ́ngi ya synchronisé mpo na lipayi moko na moko (batch te).
  • Nɔti: Mituna ya kosolola soki OPTS ebwakami. Makambo mibale ebátelaka ba code blocks/inline code mpe batíki id ya front‑matter ebongwani te; etá na translation_web_batch.log (batch) to translation_web_sync.log (sync).

translate_web_index / translation_web_index

  • Sika: bobongola baloba ya UI ya website (homepage, navbar, footer) uta website/i18n/en/code.json na ba locale nyonso na se ya website/i18n/<locale>/code.json (kobwaka en).
  • Bosaleli: make translate_web_index to make translate_web_index OPTS="--locales de,fr [--force]"
  • Esɛngɔ: export OPENAI_API_KEY (ya kopona: OPENAI_MODEL=gpt-4o-mini).
  • Bizaleli: elɛngisaka forme ya JSON, ebátelaka ba placeholders na makɔngɔ, ebátelaka ba URL ebongwani te, mpe esala retry na ndingisa soki validation ebuki.

web_build

  • Sika: bɔtɔla site ya mikanda na website/build.
  • Bosaleli: make web_build OPTS="--locales en|de,en|all" (to tía BUILD_LOCALES="en de")
  • Na kati: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Bapeso: ebɛtaka npm ci na website/ kaka soki website/node_modules/@docusaurus ezali te.

web_build_linkcheck

  • Sika: link check ya offline‑safe.
  • Bosaleli: make web_build_linkcheck OPTS="--locales en|all"
  • Nɔti: ebɔtɔli na tmp_linkcheck_web_pages; ebongoli baseUrl ya GH Pages na /; ebwaka ba lien HTTP(S) ya libanda.

web_build_local_preview

  • Sika: preview ya gh‑pages lokalɛ elongo na ba test/link‑check ya kopona.
  • Bosaleli: make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]"
  • Bizaleli: emeka liboso server ya Node ya preview (scripts/preview-server.mjs, esungi /__stop), ezongeli python3 -m http.server soki esimbi te; esalelaka 8080–8090; PID na web-local-preview/.server.pid.

web_push_github

  • Sika: pusa website/build na branche gh-pages.
  • Bosaleli: make web_push_github

Lelɔmba: tía NPM=… mpo na kobongola package manager oyo Makefile esalelaka (defaut npm).