Misooma
Qajeelfama Misoomaa
Sanadoota ragaa (documentation) qofa jalatti website/docs (Afaan Ingiliffaa) keessatti haaromsi. Hiikkoonni website/i18n/<locale>/… jalatti uumaman; harka qofaan hin gulaalamuu. Qabiyyee bifa‑naannoo (localized) haaromsuuf hojii hiikkaa fayyadami (fakkeenyaaf, make translate_web_docs_batch).
Durtii
- Node.js 22+ fi npm (Node 22 waliin qoratame)
- Thunderbird 128 ESR yookaan isaa oli (qorannoo harkaatiin)
Sirna Projeektii (sadarkaa ol‑aanaa)
- Bu’uura (root): sirna paakeejii
distribution_zip_packer.sh, docs, suuraawwan (screenshots) sources/: koodii dabalataa (background, options/popup UI, manifests, icons)tests/: walgitiinsa Vitestwebsite/: Docusaurus docs (i18n jalattiwebsite/i18n/de/...qaba)
Teessisuu fi Meeshaalee
- Deps bu’uuraa fe’i:
npm ci - Docs (filannoo):
cd website && npm ci - Taargatoota barbaadi:
make help
Misooma Itti‑Jiru (web‑ext run)
- Muriidhaa saffisaa irratti Firefox Desktop (UI smoke‑tests qofa):
npx web-ext run --source-dir sources --target=firefox-desktop- Thunderbird keessa oofi (MailExtensions irratti filatamaa):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- Gorsa:
- Konsoolii Dogoggoraa Thunderbird banuu haala itti fufinsaatti eegi (Tools → Developer Tools → Error Console).
- Fuuloleen event MV3 osoo hin hojjanne yemmuu turan ni dhaabbatu; koodiin jijjiiramee booda dabalataa irra deebiin fe’i, yookaan web‑ext akka ofumaan irra deebi’u hayyami.
- Amaloonni kan Firefox‑qofa muraasni adda adda; walsimannaa API mirkaneessuuf yeroo hunda Thunderbird keessatti ilaali.
- Karoora (path) binary Thunderbird (fakkeenya):
- Linux:
thunderbird(fakkeenya,/usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - Addaan baafannaa prooffaayilii: Sirna misoomaaf prooffaayilii Thunderbird addaa fayyadami akka qunnamtii hojii guyyaa kee hin miine.
Taargatoota Make (Alfaabeetiin)
Makefile deebi’aa hojii misoomaa waloo sirreessa. Yeroo kamiyyuu make help oofi kallattiin ibsa sarara‑tokkoon taargatoota hunda argachuuf.
Tarsiimoo: make taargatiin alaa yoo oofte, foddaa Whiptail salphaa banama; achirraa taargatii filadhu.
| Taargatii | Ibsa sarara tokko |
|---|---|
clean | Oomishaalee/ilaalchii naannoo haqi (tmp/, web-local-preview/, website/build/). |
commit | Sirreeffami (format), qorannoo (i18n dabalatee) oofi, changelog haaraa galchi, commit & push. |
eslint | ESLint bifa flat configtiin oofi (npm run -s lint:eslint). |
help | Taargatoota hunda tarreessi ibsa sarara‑tokkoon (sirriitti qindaa’e). |
lint | web‑ext lint irratti sources/ (manifest yeroo muraasa; ZIPs hin ilaalu; hin ajjeesu). |
menu | Sajoo wal‑itti hidhata qindaa’e (interactive) taargatii fi filannoowwan dabalataa filachuuf. |
pack | ATN fi LOCAL ZIPs ijaari (linter oofa; scripitii packer waama). |
prettier | Repo iddoo isa jirutti sirreeffami (barreessuu ni raawwata). |
prettier_check | Prettier haalata sakatta’aa (hin barreessu); yoo sirreeffamuu barbaachise kufa. |
prettier_write | Aliyaasa prettier. |
test | Prettier (write), ESLint, booda Vitest (coverage yoo qophaa’e). |
test_i18n | Qorannoo i18n‑qofa: bakka bu’oota dabalataa/wwalfakkaataa + walsimannaa website. |
translate_app | Aliyaasa translation_app. |
translation_app | Maqaa UI app gara sources/_locales/en/messages.json irraa hiiki. |
translate_web_docs_batch | Sanadoota website OpenAI Batch APIn hiiki (kan filatamaa). |
translate_web_docs_sync | Sanadoota website haala synchronous (legacy, non-batch) hiiki. |
translate_web_index | Aliyaasa translation_web_index. |
translation_web_index | UI fuula‑jalqabaa/navbar/footer hiiki (website/i18n/en/code.json → .../<lang>/code.json). |
web_build | Docs gara website/build ijaari (--locales / BUILD_LOCALES ni deeggara). |
web_build_linkcheck | Sakatta’iinsa link offline‑safe (HTTP[S] fagoo ni darbata). |
web_build_local_preview | Itti‑yaadama gh‑pages naannoo; tajaajila 8080–8090 irratti; filannoo tests/link‑check. |
web_push_github | website/build gara caancalaa gh-pages tti dhiibi (push). |
Syntax filannoowwan (options)f
make <command> OPTS="…"fayyadami filannoowwan dabarsuuf (qubeeleen “quotes” ni gorfamu). Taargatoota gadi aanan keessatti fakkeenyi itti fayyadama ni mul’ata.
--
Gorsa ijaarsa locale
- Locale muraasa qofa ijaaruuf:
BUILD_LOCALES="en de"kaa’i yookaanOPTS="--locales en,de"taargatoota web irratti dabarsi. - Locale tokko qofa itti‑yaaduuf:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
Ijaari & Paakeejii
- ZIPs ijaari:
make pack - ATN fi LOCAL ZIPs bu’uura repo irratti uuma (oomishaalee harka qofaan hin gulaalin)
- Tarsiimoo: bifa baay’ina lakkoofsa (version) lamaan
sources/manifest_ATN.jsonfisources/manifest_LOCAL.jsonkeessatti haaromsi paakeejii dura - Harkaatiin fe’i (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → ZIP ijaarame filadhu
Qorannoo
- Walitti qabaa guutuu:
make test(Vitest) - Coverage (filannoo):
npm i -D @vitest/coverage-v8make testoofi;coverage/index.htmlbani gabaasa HTML ilaaluuf- i18n qofa:
make test_i18n(mataa‑addeessa UI/placeholder/titles + walsimannaa website locale‑per‑doc waliin id/title/sidebar_label sakatta’i)
Sakatta’iinsa dogoggoraa fi Logoota
- Error Console: Tools → Developer Tools → Error Console
- Logoota bal’inaan yeroo hojjetu keessatti banu/cufu:
- Banu:
messenger.storage.local.set({ debug: true }) - Cufu:
messenger.storage.local.set({ debug: false }) - Logoonni yeroo deebii barreessuu/erguu keessa mul’atu
Docs (website)
- Tajaajila misoomaa:
cd website && npm run start - Bakka bultii suuta (static site) ijaari:
cd website && npm run build - Waan walsimoo Make (alfaabeetiin):
make web_build,make web_build_linkcheck,make web_build_local_preview,make web_push_github - Fakkeenya itti fayyadama:
- EN qofa, tests/link‑check dhiisi, push hin taasifne:
make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run" - Locale hunda, tests/link‑check waliin, booda push:
make web_build_local_preview && make web_push_github - Maxxansiinsa dura, sakatta’iinsa link offline‑safe oofi:
make web_build_linkcheck. - i18n: Afaan Ingiliffaan
website/docs/*.mdkeessatti jira; hiikkoonni Jarmaniiwebsite/i18n/de/docusaurus-plugin-content-docs/current/*.mdkeessatti - Barbaacha: Yoo bitaa naannawaa Algolia DocSearch CI keessatti qophaa’e (
DOCSEARCH_APP_ID,DOCSEARCH_API_KEY,DOCSEARCH_INDEX_NAME), saayitiin barbaacha Algolia fayyadama; yoo hin jiraanne ammoo barbaacha naannoo fayyadama. Fuula‑jalqaba irratti,/yookaanCtrl+Kcuqaasi sanduuqa barbaachaa banuuf.
Gara deeggarsaatti qajeelchu
website/src/pages/donate.js- Karaa:
/donate(fi/<locale>/donate) - Amala:
- Karaan ammaa locale qabaate (fkn,
/de/donate) yoo ta’e, isa sanatti fayyadami - Yoo hin jirre, walfakkaataa gaarii
navigator.languagesfi locale qindaa’aman jidduu filadhu; dhimmichaaf locale sirrii ta’eetti deebi’a - Gara kanaatti qajeelcha:
en→/docs/donation- kan biroo →
/<locale>/docs/donation useBaseUrlfayyadama baseUrl sirnaan too’achuuf- Deebii bakkalcha ta’ee meta refresh + link
noscriptdabalata
Gorsa Itti‑yaadama
- Node preview sirnaan dhaabi:
http://localhost:<port>/__stopbanu (kan maxxanfamuLocal server startedbooda). - Suuraaleen MDX/JSX keessatti hin fe’aanne yoo ta’e,
useBaseUrl('/img/...')fayyadami akkabaseUrlsaayitii kabajamu. - Itti‑yaadami jalqaba; erga jalqabamee booda sakatta’iinsi link ni fiigaa fi to’annoo hin ugguru (link alaa caccabaa itti‑yaadama hin dhaabu).
- Fakkeenya URL itti‑yaadama:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/(“Local server started” booda ni maxxanfama). - Link alaa sakatta’iinsa link keessatti: Marsariitii alaa muraasni (fkn, addons.thunderbird.net) qaxxaamurtoota otomaatii ugguru; 403 agarsiisu danda’u. Itti‑yaadami garuu ni jalqaba; kanneen kana ni dhiifamu.
Websayitii Hiiki
Wanti ati hiiku dandeessu
- UI website qofa: fuula‑jalqabaa, navbar, footer, fi barruulee UI biroo. Qabiyyeen docs ammatti Ingiliffaa‑qofa ta’a.
Eessa gulaali
website/i18n/<locale>/code.jsongulaali (enakka maddi tumsaa fayyadami). Bakka bu’oota akkuma{year},{slash},{ctrl},{k},{code1}akkasumaatti eegi.
Faayiloota uumi yookaan haaromsi
- Locale hundaaf stubs dhaban uumi:
npm --prefix website run i18n:stubs - Stubs Ingiliffaarraa irra caqi (erga barruulee haaraa dabaltee booda):
npm --prefix website run i18n:stubs:force - Filannoo locale tokko qofaaf:
npx --prefix website docusaurus write-translations --locale <locale>
Maqaalee UI fuula‑jalqabaa/navbar/footer hiiki (OpenAI)
- Ragaa seenuu (credentials) yeroo tokkotti kaa’i (shell yookaan .env):
export OPENAI_API_KEY=sk-...- Filannoo:
export OPENAI_MODEL=gpt-4o-mini - Yeroo tokkotti (locale hunda, en dhiisi):
make translate_web_index - Locale murtaa’eef daangeessi:
make translate_web_index OPTS="--locales de,fr" - Gatiin jiru irra deebi’i (overwrite):
make translate_web_index OPTS="--force"
Mirkaneessa & yaaliwwan irra deebii
- Scriptiin hiikkaa Sirna JSON ni mirkaneessa, bakka bu’oota qal’insa kurkoofaa (curly‑brace) ni eega, URL‑otaas akka hin jijjiiramne ni mirkaneessa.
- Mirkaneessi yoo kufe, yaada deebi’een hanga yeroo 2 tti irra deebi’a; boodarra gatii jiru ni tursiisa.
Locale kee dursee ilaali
- Tajaajila misoomaa:
npm --prefix website run start http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/daawwadhu
Erguu
- Faayiloota
code.jsongulaalamaniin PR banu. Jijjiiramoota daangessii eegi; yemmuu danda’amu suuraa xiqqaa dabaluu yaali.
Nageenya fi Qindeessuu — Gorsa
sources/manifest.jsonhin commit’in (ijaarraan yeroo muraasaaf uumama)browser_specific_settings.gecko.idtasgabbaa’aa eegi akka tajaajilli update hin jijjiiramne
Turtii Seerota (Settings)
- Kuusaa: Qindaa’inoonni fayyadamaa hunda
storage.localkeessatti jiraatu; update dabalataan ni turu. - Teessisuu: Itti‑gaafatamni durtii iddoo bu’uun ni raawwatama yommuu furtuun dhabamuu (undefined) qofa.
- Haaromsuu: Jijjiirraan (migration) furtuu dhabaman qofa guuta; gatiin jiru hin irra‑barreessamu.
- Mallattoo schema:
settingsVersion(ammatti1). - Furtuuwwan fi durtiwwan:
blacklistPatterns: string[]→['*intern*', '*secret*', '*passwor*']confirmBeforeAdd: boolean→falseconfirmDefaultChoice: 'yes'|'no'→'yes'warnOnBlacklistExcluded: boolean→true- Koodii:
sources/background.js→initializeOrMigrateSettings()fiSCHEMA_VERSIONilaali.
Hojii misoomaa (qindaa’ina haaraa dabaluu)
SCHEMA_VERSIONkeessattisources/background.jsdabali.- Furtuu haaraa + durtii gara wanta
DEFAULTSjedhu keessainitializeOrMigrateSettings()keessatti dabaluu. - Durtiiwwan “yommuu‑qofa‑hinjiru” jedhuun facaasi; gatiiwwan jiran hin irra‑barreessin.
- Yoo qindaa’inni fayyadamaa itti mul’atu ta’e,
sources/options.jskeessatti walitti hidhi; barruulee bifa‑naannoo dabaluu. - Qorannoo dabaluu/yookaan fooyyessi (
tests/background.settings.migration.test.jsilaali).
Gorsa qorannoo harkaatiin
- Teessisuu haaraa fakkeessuuf: kuusaa (data dir) extension haqii yookaan prooffaayilii haaraa jalqabi.
- Haaromsuu fakkeessuuf:
settingsVersiongara0ttistorage.localkeessatti saagi fi irra deebi’i fe’i; gatiin jiran akka hin jijjiiramne fi furtuun dhabaman qofa akka dabalaman mirkaneessi.
Hiika Rakkoo
- Thunderbird 128 ESR yookaan isaa oli akka ta’e mirkaneessi
- Rakkoo yeroo raawwii keessatti furuu: Error Console fayyadami
- Qindaa’inni kuufame akka hin hojjanne fakkaatee yoo mul’ate, Thunderbird irra deebi’i banuu yaali. (Thunderbird haalata keessa qabachuu danda’a; irra deebiin banuun qindaa’inoota haarawa fe’a.)
CI fi Coverage
- GitHub Actions (
CI — Tests) vitest coverage tajaajiltoota (85% lines/functions/branches/statements) waliin oofa. Yoo hanga caasaa hin guutamne, hojii ni kufa. - Adeemsi kun oomisha
coverage-htmlof keessaa qabata gabaasa HTML’n; fuula raawwii irraa buusi (Actions → raawwii dhiyoo → Artifacts).
Hirmaannaa
- CONTRIBUTING.md ilaali qajeelfama caancalaa/commit/PR
- Tarsiimoo: Prooffaayilii misooma Thunderbird addaa uumi qorannoo irratti gochuuf akka prooffaayilii guyyaa kee hin miine.
Hiikkoota
- Hojii hiikkaa “hunda → hunda” bal’aan gaabbii fi baasii qabaachuu danda’a. Locale muraasa fi docs muraasa irraa jalqabi, bu’aa ilaali, ergasii bal’isi.
- Sirna irra deebi’i: hojii hiikkaa hanga yeroo 3 tti irra deebi’a dogoggora API irrattis gadi‑lakkisii haala dhiphina dabalaa fayyadamuun;
scripts/translate_web_docs_batch.jsfiscripts/translate_web_docs_sync.jsilaali.
Suuraawwan docs‑f
-
Suuraalee
website/static/img/jala kaa’i. -
MD/MDX keessatti
useBaseUrl('/img/<filename>')fayyadami akka karaan (paths) waliin hojjatubaseUrlsaayitii waliin. -
Suuraalee
website/static/img/jala dabaltee yookaan maqaa jijjiirte booda, hundiuseBaseUrl('/img/…')fayyadamu akka itti fufu fi itti‑yaadama naannoo keessatti akka mul’atu mirkaneessi. Favicons -
favicon.icobaay’ina‑guddaa of keessaa qabu karaa hundumaa (Make + scripts)website/scripts/build-favicon.mjsn otomaatiin ni uumama. -
Tarkaanfii harkaatiin hin barbaachisu;
icon-*.pnghaaromsuun gahaa dha. Tarsiimoo ilaalcha -
Docs hiikataman keessatti front‑matter
idakka hin jijjiiramin eegi; yommuu jiraatantitlefisidebar_labelqofa hiiki.
clean
- Kaayyoo: oomishaalee/ilaalchii naannoo haquu.
- Fayyadama:
make clean - Akkasuma ni haqa (yoo jiraatan):
tmp/web-local-preview/website/build/
commit
- Kaayyoo: sirreeffami, qorannoo, changelog haaromsuu, commit, fi push.
- Fayyadama:
make commit - Bal’inaan: Prettier (write),
make test,make test_i18noofa; yommuu sochiin stagii jiru jiraatu changelog itti dabala; garaorigin/<branch>tti ni dhiiba.
eslint
- Kaayyoo: ESLint bifa flat configtiin oofi.
- Fayyadama:
make eslint
help
- Kaayyoo: taargatoota hunda ibsa sarara‑tokkoon tarreessi.
- Fayyadama:
make help
lint
- Kaayyoo: MailExtension
web-extfayyadamuun linti. - Fayyadama:
make lint - Yaadannoowwan:
sources/manifest_LOCAL.json→sources/manifest.jsonyeroo muraasaaf kophatti garagalcha; ZIP ijaaramanii hin ilaallaman; akeekkachiisni (warnings) paayipilaayinii hin kufisan.
menu
- Kaayyoo: sajoo wal‑itti hidhata qindaa’e taargatii fi filannoowwan dabalataa filachuuf.
- Fayyadama:
makehomaa ala oofi. - Yaadannoowwan:
whiptailyoo hin jirre, sajoomake helptti deebi’a.
pack
- Kaayyoo: ATN fi LOCAL ZIPs ijaaru (
lintirratti hirkata). - Fayyadama:
make pack - Tarsiimoo: baay’ina lamaan
sources/manifest_*.jsonkeessatti dabaluu paakeejii dura.
prettier
- Kaayyoo: repo iddoo isa jirutti sirreessuu.
- Fayyadama:
make prettier
prettier_check
- Kaayyoo: sirreessuu mirkaneessuu (hin barreessu).
- Fayyadama:
make prettier_check
prettier_write
- Kaayyoo: aliyaasa
prettier. - Fayyadama:
make prettier_write
test
- Kaayyoo: Prettier (write), ESLint, ergasii Vitest (coverage yoo fe’amte) oofu.
- Fayyadama:
make test
test_i18n
- Kaayyoo: qorannoo i18n irratti xiyyeeffateef maqaalee app fi docs website.
- Fayyadama:
make test_i18n - Ni oofa:
npm run test:i18nfinpm run -s test:website-i18n.
translate_app / translation_app
- Kaayyoo: maqaalee UI add‑on EN irraa gara locale birootiitti hiiku.
- Fayyadama:
make translation_app OPTS="--locales all|de,fr" - Yaadannoowwan: sirna furtuu eega fi bakka bu’oota hin jijjiiru; gara
translation_app.logtti galmeessa. Sirna scripitii:node scripts/translate_app.js --locales ….
translate_web_docs_batch / translate_web_docs_sync
- Kaayyoo: sanadoota website
website/docs/*.mdirraa garawebsite/i18n/<locale>/...tti hiiku. - Kan filatamaa:
translate_web_docs_batch(OpenAI Batch API)- Fayyadama (flags):
make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - Legacy positional amma illee ni fudhata:
OPTS="<doc|all> <lang|all>"
- Fayyadama (flags):
- Amala: JSONL ijaara, olkachiisa, osoo osoo 30s hunda gaafata, bu’aa buufata, faayiloota barreessa.
- Yaada: hojii batch hanga sa’aatii 24 fudhachuu danda’a (batch window OpenAI). Koonsooliin yeroo darbe gaaffii hundaan ni agarsiisa.
- Naannolee:
OPENAI_API_KEY(dirqama), filannooOPENAI_MODEL,OPENAI_TEMPERATURE,OPENAI_BATCH_WINDOW(bifa durtii 24h),BATCH_POLL_INTERVAL_MS. - Legacy:
translate_web_docs_sync- Fayyadama (flags):
make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - Legacy positional amma illee ni fudhata:
OPTS="<doc|all> <lang|all>"
- Fayyadama (flags):
- Amala: gaaffii wajiin‑wajiin synchronous (batch aggreg. malee).
- Yaadannoowwan:
OPTSyoo dhihaachuu baate gaaffii wal‑itti dhufeenya (interactive) geessisa. Haala lamaanis bifa koodii (code blocks/inline) ni eega; front‑matteridhin jijjiiru; garatranslation_web_batch.log(batch) yookaantranslation_web_sync.log(sync)tti galmeessa.
translate_web_index / translation_web_index
- Kaayyoo: maqaalee UI website (fuula‑jalqabaa, navbar, footer)
website/i18n/en/code.jsonirraa gara locale hundaatti jalattiwebsite/i18n/<locale>/code.json(kanenhin dabalne) hiiku. - Fayyadama:
make translate_web_indexyookaanmake translate_web_index OPTS="--locales de,fr [--force]" - Dirqama:
OPENAI_API_KEYexport godhi (filannoo:OPENAI_MODEL=gpt-4o-mini). - Amala: Sirna JSON ni mirkaneessa, bakka bu’oota qal’insa kurkoofaa ni eega, URL‑ota hin jijjiiru, dogoggora mirkaneessaa irra deebi’uun yaali.
web_build
- Kaayyoo: saayitii docs gara
website/buildijaaru. - Fayyadama:
make web_build OPTS="--locales en|de,en|all"(yookaanBUILD_LOCALES="en de"kaa’i) - Keessummaa:
node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …]. - Deps:
npm ciwebsite/keessatti ni oofa yoowebsite/node_modules/@docusaurusdhabame.
web_build_linkcheck
- Kaayyoo: sakatta’iinsa link offline‑safe.
- Fayyadama:
make web_build_linkcheck OPTS="--locales en|all" - Yaadannoowwan: gara
tmp_linkcheck_web_pagestti ijaara;baseUrlGH Pages gara/tti deeggarsa; HTTP(S) fagoo ni darbata.
web_build_local_preview
- Kaayyoo: itti‑yaadama gh‑pages naannoo tests/link‑check filannoo waliin.
- Fayyadama:
make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]" - Amala: jalqaba tajaajila itti‑yaadama Node yaala (
scripts/preview-server.mjs,/__stopni deeggara), boodapython3 -m http.servertti ni deebi’a; tajaajila 8080–8090; PIDweb-local-preview/.server.pidirratti.
web_push_github
- Kaayyoo:
website/buildgara caancalaagh-pagestti dhiibuu. - Fayyadama:
make web_push_github
Tarsiimoo: NPM=… kaa’i meeshaa paakeejii Makefile fayyadamu jijjiiruuf (bifa durtii npm).