Skip to main content

Iterambere


Inyoborora y'Iterambere

Hindura Icongereza gusa; ubusobanuro mu zindi ndimi burakwiragira

Vugurura inyandiko gusa munsi ya website/docs (Icongereza). Ibisobanuro biri munsi ya website/i18n/<locale>/… birakorwa mu buryo bwikora kandi ntibikwiye guhindurwa n'intoke. Koresha imirimo yo guhindura (urugero, make translate_web_docs_batch) kugira uvugurure ibirimo vy’indimi zaho.

Ibikenewe imbere y’ugutangura

  • Node.js 22+ na npm (vyageragejwe na Node 22)
  • Thunderbird 128 ESR canke nshasha kurusha (ku igerageza ry’intoke)

Imyubakire y’umushinge (urwego rwo hejuru)

  • Imizi (root): iskripti yo gupakira distribution_zip_packer.sh, docs, screenshots
  • sources/: kode nyamukuru y’inyongera (background, uburyo bwo guhitamwo/popup UI, manifests, icons)
  • tests/: urukurikirane rwa Vitest
  • website/: inyandiko za Docusaurus (harimwo i18n munsi ya website/i18n/de/...)

Kwinjiza & Ibikoresho

  • Shiramwo inyongera z’imizi: npm ci
  • Inyandiko (vy’ukwishaka): cd website && npm ci
  • Menya intego: make help

Iterambere ryo mu gihe nyaco (web‑ext run)

  • Ukoresheza vuba muri Firefox Desktop (amagerageza yoroheje ya UI gusa):
  • npx web-ext run --source-dir sources --target=firefox-desktop
  • Koresha muri Thunderbird (bihambaye kuri MailExtensions):
  • npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"
  • Inama:
  • Gumiza ifunguye Error Console ya Thunderbird (Tools → Developer Tools → Error Console).
  • Amapaji y’ivyabaye ya MV3 arahangamirwa iyo ntaco ariko arakora; suvya inyongera inyuma y’impinduka za kode, canke ureke web‑ext yisubirize mu gutangura.
  • Bimwe mu bigenamigenderanire vya Firefox gusa biratandukana; igihe cose ni vyiza kubiheragiza muri Thunderbird kugira hubahirizwe API.
  • Inzira za bineri za Thunderbird (ingero):
  • Linux: thunderbird (urugero, /usr/bin/thunderbird)
  • macOS: /Applications/Thunderbird.app/Contents/MacOS/thunderbird
  • Windows: "C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
  • Ukutandukanya umwidondoro: Koresha umwidondoro wihariye wa Thunderbird ku iterambere kugira utabangamira imicungararo yawe y’imisi yose.

Intego za Make (mu nyuguti)

Makefile isanzweza imigendere y’iterambere isanzwe. Koresha make help igihe cose kugira ubone insobanuro y’umurongo umwe kuri buri ntego.

Inama: gukoresha make ata ntego bitangura imenyu yoroshe ya Whiptail yo guhitamwo intego.

InyunguInsobanuro y’umurongo umwe
cleanKurandura ivyakorewe hano (tmp/, web-local-preview/, website/build/).
commitGushyira ku murongo, gukoresha amagerageza (harimwo i18n), kuvugurura changelog, gukora commit & push.
eslintGukoresha ESLint biciye kuri flat config (npm run -s lint:eslint).
helpGutororokanya intego zose n’insobanuro z’umurongo umwe (zitunganyijwe).
lintweb‑ext lint kuri sources/ (temp manifest; irengagiza ZIPs; ntituma haba ikosa rikomeye).
menuImenyu ikorana kugira uhitemwo intego n’amahitamwo y’inyongera.
packKubaka ZIPs za ATN & LOCAL (ikoresha linter; ihamagara iskripti yo gupakira).
prettierGushyira ku murongo (format) repository aho iri (yandika impinduka).
prettier_checkPrettier mu buryo bwo kugenzura (nta kwandika); iratsindwa niba hakenewe gusubira gutondeka.
prettier_writeIzina risubirira prettier.
testPrettier (andika), ESLint, hanyuma Vitest (coverage niramuka yateguwe).
test_i18nAmagerageza ya i18n gusa: imisimburo/akaranga k’inyongera + kureshanya neza urubuga.
translate_appIzina risubirira translation_app.
translation_appHindura imirongo ya UI ya porogaramu uvuye muri sources/_locales/en/messages.json.
translate_web_docs_batchHindura inyandiko z’urubuga ukoresheje OpenAI Batch API (vyahinyanyuwe).
translate_web_docs_syncHindura inyandiko z’urubuga mu buryo busanzwe (legacy, atari batch).
translate_web_indexIzina risubirira translation_web_index.
translation_web_indexHindura imirongo ya UI ya homepage/navbar/footer (website/i18n/en/code.json → .../<lang>/code.json).
web_buildKubaka inyandiko kuri website/build (ishigikira --locales / BUILD_LOCALES).
web_build_linkcheckIsuzuma ry’imihora y’uturonse rikora ata murongo (rirasiba HTTP[S] yo hanze).
web_build_local_previewIngero y’aho haca gh‑pages; ishusha y’icoreshejwe kuri 8080–8090; amagerageza/isanuro y’uturonse ku bushake.
web_push_githubShira website/build kuri ishami gh-pages.

Uburyo bw’amahitamwo

  • Koresha make <command> OPTS="…" gutanga amahitamwo (gukoresha amajambo afise amafato “quotes” birasabwa). Buri ntego hasi aha igira akarorero k’ukoresha.

--

Inama zo kubaka indimi

  • Kubaka akagice k’indimi: shira BUILD_LOCALES="en de" canke uhe OPTS="--locales en,de" ku ntego z’urubuga.
  • Rerera ururimi rumwe gusa: http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.

Kubaka & Gupakira

  • Kubaka ZIPs: make pack
  • Ibisohoka ni ZIPs za ATN na LOCAL mu mizi ya repo (ntukosore ivyakozwe n’intoke)
  • Inama: vugurura inomero y’ipurisa (version) muri vyompi sources/manifest_ATN.json na sources/manifest_LOCAL.json imbere yo gupakira
  • Kwinjiza n’intoke (iterambere): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → hitamwo ZIP wubatse

Igerageza

  • Urukurikirane rwose: make test (Vitest)
  • Coverage (ku bushake):
  • npm i -D @vitest/coverage-v8
  • Koresha make test; fungura coverage/index.html ku cegeranyo ca HTML
  • i18n gusa: make test_i18n (amafunguro ya UI/imisimburo/udutwe + kureshanya neza urubuga buri rurimi kuri buri nyandiko hamwe n’igenzura rya id/title/sidebar_label)

Gusuzuma & Amadosiye y’ivyabaye (Logs)

  • Error Console: Tools → Developer Tools → Error Console
  • Hindura logs zisesuye mu gihe porogaramu iri gukora:
  • Gukoresha: messenger.storage.local.set({ debug: true })
  • Kureka: messenger.storage.local.set({ debug: false })
  • Amadosiye y’ivyabaye arafatwa mu gihe wubaka/canke urungika inyishu

Inyandiko (urubuga)

  • Seriveri y’iterambere: cd website && npm run start
  • Kubaka urubuga rwa static: cd website && npm run build
  • Ibisa na Make (mu nyuguti): make web_build, make web_build_linkcheck, make web_build_local_preview, make web_push_github
  • Ingero z’ukoresheje:
  • EN gusa, saba amagerageza/isanuro y’uturonse, nta push: make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run"
  • Indimi zose, hamwe n’amagerageza/isanuro y’uturonse, hanyuma push: make web_build_local_preview && make web_push_github
  • Imbere yo gushira ahabona, kora isuzuma ry’imihora ridakeneye umurongo: make web_build_linkcheck.
  • i18n: Icongereza kiba muri website/docs/*.md; Ubudagi (German) buba muri website/i18n/de/docusaurus-plugin-content-docs/current/*.md
  • Gushakashaka: Nimba ibidukikije vya Algolia DocSearch vyashizwe muri CI (DOCSEARCH_APP_ID, DOCSEARCH_API_KEY, DOCSEARCH_INDEX_NAME), urubuga rukoresha Algolia; ubundi rucika ku bushakashatsi bwo kuri local. Ku rupapuro ntangamarara (homepage), kanda / canke Ctrl+K kugira ufungure isandugu yo gushakashaka.

  • website/src/pages/donate.js
  • Inzira: /donate (kandi /<locale>/donate)
  • Ingene bikora:
  • Niba inzira iriho ifise ururimi (urugero, /de/donate), irukoresha
  • Ahandi, ihitamwo ihuriro riza hagati ya navigator.languages na indimi ziteguwe; igasubira ku rurimi ndungamisi
  • Irungika kuri:
  • en/docs/donation
  • izindi → /<locale>/docs/donation
  • Ikoresha useBaseUrl kugira irangurure neza baseUrl
  • Harimwo meta refresh + isura noscript nk’ingene vyokwihenda vyose vyosubirwamwo


Inama z’Ibere y’Ishusho

  • Hagarika neza ishusho ya Node: fungura http://localhost:<port>/__stop (icanditswe inyuma ya Local server started).
  • Nimba amashusho adashobora kwiyunguruza muri MDX/JSX, koresha useBaseUrl('/img/...') kugira wubahirize baseUrl y’urubuga.
  • Ishusho (preview) itangura ubwa mbere; isanuro y’uturonse ikurikira kandi ntiyigera ibuza (imihora yo hanze yacitse ntizibuza ishusho gutangura).
  • Ingero ya URL y’ishusho: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (icanditswe inyuma ya “Local server started”).
  • Imihora yo hanze mu isanuro y’uturonse: Bamwe mu masite yo hanze (urugero, addons.thunderbird.net) barakingira abasaka b’ikora vyikora kandi boshobora kugaragaza 403 mu isanuro y’uturonse. Ishusho iratangura; ivyo birashobora kwirengagizwa ata kibazo.

Hindura Urubuga

Ivyo ushobora guhindura

  • UI y’urubuga gusa: homepage, navbar, footer, n’imirongo y’utundi duce twa UI. Ibirimo vy’inyandiko (docs) ubu biguma mu Congereza gusa.

Aho wahindurira

  • Hindura website/i18n/<locale>/code.json (koresha en nk’icitegererezo). Bika utahinduye ibisigarijwe nka {year}, {slash}, {ctrl}, {k}, {code1}.

Kurema canke kuvugurura amadosiye

  • Kora ibisigarijwe bibuze ku ndimi zose: npm --prefix website run i18n:stubs
  • Andikako ibisigarijwe uvuye mu Congereza (inyuma yo kongeramwo imirongo mishasha): npm --prefix website run i18n:stubs:force
  • Uburyo bundi ku rurimi rumwe: npx --prefix website docusaurus write-translations --locale <locale>

Hindura imirongo ya UI ya homepage/navbar/footer (OpenAI)

  • Shiraho ububasha (credentials) rimwe (shell canke .env):
  • export OPENAI_API_KEY=sk-...
  • Ku bushake: export OPENAI_MODEL=gpt-4o-mini
  • Icese rimwe (indimi zose, uretse en): make translate_web_index
  • Gabanya ku ndimi runaka: make translate_web_index OPTS="--locales de,fr"
  • Sigarura (overwrite) agaciro kariho: make translate_web_index OPTS="--force"

Kwemeza & gusubira kugerageza

  • Iskripti yo guhindura iremeza imiterere ya JSON, irakingira ibisigarijwe bifise imikoba ya curly-brace, kandi iraraba ko URLs zitahindutse.
  • Niharangwa ikosa mu kwemeza, irasubira kugerageza gushika ku biringo 2 hamwe n’inyigisho, imbere yo gusigaza agaciro kariho.

Rerera ururimi rwawe

  • Seriveri y’iterambere: npm --prefix website run start
  • Sura http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/

Gushikiriza

  • Funguza PR ifise amadosiye code.json wahinduye. Bika impinduka zifashe ku co wihaye kandi, bishobotse, shiramwo ifoto y’ishusho yihuta.

Inama z’Umutekano & Igenamiterere

  • Ntukore commit ya sources/manifest.json (yaremwe gatoya n’ukurenga kubaka)
  • Guma browser_specific_settings.gecko.id idahinduka kugira ubeze inzira y’ivugururwa (update channel)

Ukugumya Amagenekerezo

  • Ububiko: Amagenekerezo yose y’umukoresha abikwa muri storage.local kandi agumaho mu gihe c’ivugururwa ry’inyongera.
  • Kwinjiza: Defaults arajanwa gusa iyo urufunguruzo ruri kubuze rwose (undefined).
  • Kuvugurura: Ukwimura (migration) kuzuza gusa imfunguruzo zibuze; amanota (agaciro) ariho ntarasubirwamwo.
  • Akamenyetso ka schema: settingsVersion (ubu ni 1).
  • Imfunguruzo n’inyandikiro nsanzwe (defaults):
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • Kode: raba sources/background.jsinitializeOrMigrateSettings() na SCHEMA_VERSION.

Uko bikorwa mu iterambere (kongerako isetingi nshasha)

  • Tereza hejuru SCHEMA_VERSION muri sources/background.js.
  • Ongeramwo urufunguruzo rushasha + default ku kintu DEFAULTS muri initializeOrMigrateSettings().
  • Koresha itegeko “only-if-undefined” mu gucanisha defaults; ntusubireko amanota ariho.
  • Niba iyo setingi iboneka ku mukoresha, iyihuze muri sources/options.js kandi wongeremwo imirongo y’indimi zaho.
  • Ongeramwo/cungura amagerageza (raba tests/background.settings.migration.test.js).

Inama ku igerageza ry’intoke

  • Gereranya kwinjiza gishasha: siba ububiko bw’inyongera canke utangure n’umwidondoro mushasha.
  • Gereranya ivugururwa: shira settingsVersion kuri 0 muri storage.local hanyuma wongere ukore load; emeza ko amanota ariho atahindutse kandi ko hiyongereyeko gusa imfunguruzo zibuze.

Gutunganya Ibibazo

  • Menya ko Thunderbird ari 128 ESR canke nshasha kurusha
  • Koresha Error Console ku bibazo biba mu gihe porogaramu iri gukora
  • Niba amagenekerezo abitswe asa n’adafata uko bikwiye, tangura bushasha Thunderbird hanyuma wongere ugerageze. (Thunderbird irashobora kubika ingene ibintu vyifashe hagati y’ibigendeka; gutangura bushasha birorohereza kwinjiza amagenekerezo mashasha.)

CI & Coverage

  • GitHub Actions (CI — Tests) irakoresha vitest n’amarongo y’ibigero vya coverage (85% imirongo/imigirwa (functions)/amashami/imvugo (statements)). Nimba ibigero bitashitse, akazi karatsindwa.
  • Uko bikorwa kurashira hejuru igikoresho coverage-html gifise icegeranyo ca HTML; urashobora kugikura ku rupapuro rw’ukwihutira (Actions → latest run → Artifacts).

Ugutanga Intererano

  • Raba CONTRIBUTING.md ku mabwirizwa ya branch/commit/PR
  • Inama: Kora umwidondoro witerambere wa Thunderbird wihariye ku igerageza kugira ntuhungabanye umwidondoro ukoresha buri munsi.

Ubusobanuro (Translations)

  • Gukoresha imirimo mininiminini ya “vyose → vyose” mu guhindura birashobora gutwara umwanya kandi bihenze. Tangura n’ak’utwo (urugero, inyandiko nkeyi na 1–2 indimi), raba ivyavuyemwo, hanyuma wiyongere.

  • Politike yo gusubira kugerageza: imirimo yo guhindura ikora gushika ku bigerageza 3 hamwe n’ukugabanura ukundi (exponential backoff) ku makosa ya API; raba scripts/translate_web_docs_batch.js na scripts/translate_web_docs_sync.js.

Ifoto z’ishusho ku nyandiko

  • Bika amashusho munsi ya website/static/img/.

  • Yayerekeze muri MD/MDX biciye kuri useBaseUrl('/img/<filename>') kugira inzira zikore n’igenamiterere rya baseUrl ry’urubuga.

  • Inyuma yo kongeramwo canke guhindura amazina y’amashusho munsi ya website/static/img/, emeza ko ubuja bukiri gukoresha useBaseUrl('/img/…') kandi bukerekana mu ishusho yo kuri local. Favicons

  • favicon.ico ifise ubunini bwinshi irubakwa ukwayo mu nzira zose zo kubaka (Make + scripts) biciye kuri website/scripts/build-favicon.mjs.

  • Nta ntambwe y’intoke ikenewe; kuvugurura icon-*.png birahagije. Inama yo gusuzuma

  • Gumana front‑matter id idahindutse mu nyandiko zahinduwe; hindura gusa title na sidebar_label iyo bihari.

clean

  • Intego: kurandura ivyakorewe hano (build/preview).
  • Uko ikoreshwa: make clean
  • Ikomora (nihari):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • Intego: gushyira ku murongo, kugerageza, kuvugurura changelog, gukora commit, no gukora push.
  • Uko ikoreshwa: make commit
  • Birambuye: ikoresha Prettier (andika), make test, make test_i18n; yandika inyongera kuri changelog iyo hari ibihinduwe biri ku murongo; ikora push kuri origin/<branch>.

eslint

  • Intego: gukoresha ESLint biciye kuri flat config.
  • Uko ikoreshwa: make eslint

help

  • Intego: gutororokanya intego zose n’insobanuro z’umurongo umwe.
  • Uko ikoreshwa: make help

lint

  • Intego: gusuzuma MailExtension ukoresheje web-ext.
  • Uko ikoreshwa: make lint
  • Ibisobanuro: igira amakopi y’igihe gito sources/manifest_LOCAL.jsonsources/manifest.json; irengagiza ZIPs zubatswe; impashyi (warnings) ntizitera gutsindwa kw’umurongo.

menu

  • Intego: imenyu ikorana yo guhitamwo intego ya Make n’amahitamwo.
  • Uko ikoreshwa: kora make ata majambo.
  • Ibisobanuro: niba whiptail itaboneka, imenyu isubira kuri make help.

pack

  • Intego: kubaka ZIPs za ATN na LOCAL (isaba lint).
  • Uko ikoreshwa: make pack
  • Inama: terereza hejuru inomero z’ipurisa (version) muri vyompi sources/manifest_*.json imbere yo gupakira.

prettier

  • Intego: gushyira ku murongo repository aho iri.
  • Uko ikoreshwa: make prettier

prettier_check

  • Intego: kugenzura itondeka (nta kwandika).
  • Uko ikoreshwa: make prettier_check

prettier_write

  • Intego: izina risubirira prettier.
  • Uko ikoreshwa: make prettier_write

test

  • Intego: gukora Prettier (andika), ESLint, hanyuma Vitest (coverage niramuka yashizweho).
  • Uko ikoreshwa: make test

test_i18n

  • Intego: amagerageza yibanda kuri i18n ku mirongo y’inyongera n’inyandiko z’urubuga.
  • Uko ikoreshwa: make test_i18n
  • Irakora: npm run test:i18n na npm run -s test:website-i18n.

translate_app / translation_app

  • Intego: guhindura imirongo ya UI y’inyongera uvuye muri EN ujana mu zindi ndimi.
  • Uko ikoreshwa: make translation_app OPTS="--locales all|de,fr"
  • Ibisobanuro: irakingira imiterere y’utujambo (keys) n’ibisigarijwe; yandika amakuru muri translation_app.log. Uburyo bwa script: node scripts/translate_app.js --locales ….

translate_web_docs_batch / translate_web_docs_sync

  • Intego: guhindura inyandiko z’urubuga uvuye muri website/docs/*.md uja muri website/i18n/<locale>/....
  • Bigamijwe: translate_web_docs_batch (OpenAI Batch API)
    • Uko ikoreshwa (amabendera): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Uburyo busanzwe bwo gutanga ibintu mu myanya (positional) buracemewe: OPTS="<doc|all> <lang|all>"
  • Ingene bikora: yubaka JSONL, ikarungika, igakurikirana buri masegonda 30, igakuraho ivyavuye, igasohora amadosiye.
  • Ibisaba: akazi ka batch gashobora gutwara gushika ku masaha 24 kuranguka (hakurikijwe icicaro ca OpenAI). Console yerekana umwanya umaze ku gukurikirana kumwe kose.
  • Ibidukikije: OPENAI_API_KEY (bisabwa), ku bushake OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (ndungamisi 24h), BATCH_POLL_INTERVAL_MS.
  • Legacy: translate_web_docs_sync
    • Uko ikoreshwa (amabendera): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Uburyo busanzwe bwo gutanga ibintu mu myanya (positional) buracemewe: OPTS="<doc|all> <lang|all>"
  • Ingene bikora: ibisabwa ku bw’uruhande rumwe ku gihe (synchronous), ata gukusanya muri batch.
  • Ibisobanuro: Ibibazo bikoreshwa igihe OPTS itabonetse. Uburyo bwompi bwarinda uduciro tw’inkindo (code blocks/inline code) kandi bigumana front‑matter id itahinduwe; yandika amakuru muri translation_web_batch.log (batch) canke translation_web_sync.log (sync).

translate_web_index / translation_web_index

  • Intego: guhindura imirongo ya UI y’urubuga (homepage, navbar, footer) uvuye muri website/i18n/en/code.json uja mu ndimi zose munsi ya website/i18n/<locale>/code.json (usib除 en).
  • Uko ikoreshwa: make translate_web_index canke make translate_web_index OPTS="--locales de,fr [--force]"
  • Ibisabwa: export OPENAI_API_KEY (ku bushake: OPENAI_MODEL=gpt-4o-mini).
  • Ingene bikora: iremeza imiterere ya JSON, irakingira ibisigarijwe vya curly‑brace, igasigura ko URLs zitahindutse, kandi igasubira kugerageza hamwe n’inyigisho mu gihe haba amakosa yo kwemeza.

web_build

  • Intego: kubaka urubuga rw’inyandiko kuri website/build.
  • Uko ikoreshwa: make web_build OPTS="--locales en|de,en|all" (can.ke shira BUILD_LOCALES="en de")
  • Imy inside: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Ivyisabwa: ikoresha npm ci muri website/ gusa iyo website/node_modules/@docusaurus ibuze.

web_build_linkcheck

  • Intego: isanuro y’uturonse ridakeneye umurongo (offline‑safe).
  • Uko ikoreshwa: make web_build_linkcheck OPTS="--locales en|all"
  • Ibisobanuro: yubaka kuri tmp_linkcheck_web_pages; yandika ivyanditswe vya GH Pages baseUrl bikaja kuri /; irasiba imihora ya HTTP(S) yo hanze.

web_build_local_preview

  • Intego: ishusho yo kuri local ya gh‑pages ifise amagerageza/isanuro y’uturonse ku bushake.
  • Uko ikoreshwa: make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]"
  • Ingene bikora: ibanza kugerageza seriveri y’ishusho ya Node (scripts/preview-server.mjs, ishigikira /__stop), hanyuma igasubira kuri python3 -m http.server; iratanga kuri 8080–8090; PID kuri web-local-preview/.server.pid.

web_push_github

  • Intego: gushira website/build ku ishami gh-pages.
  • Uko ikoreshwa: make web_push_github

Inama: shira NPM=… kugira uhanagure umucungarukazi (package manager) ukoreshejwe na Makefile (ndungamisi ni npm).