Þróun
Þróunarleiðbeiningar
Uppfærðu skjölin aðeins undir website/docs (enska). Þýðingar undir website/i18n/<locale>/… eru sjálfvirkt myndaðar og ætti ekki að breyta handvirkt. Notaðu þýðingaverkefnin (t.d. make translate_web_docs_batch) til að endurnýja staðfærð efni.
Forkröfur
- Node.js 22+ og npm (prófað með Node 22)
- Thunderbird 128 ESR eða nýrri (fyrir handprófanir)
Verkefnaskipan (í grófum dráttum)
- Rót: pökkunarskrifta
distribution_zip_packer.sh, skjöl, skjámyndir sources/: aðal kóði viðbótar (bakhlaup, stillingar/uppsprettuglugga-UI, manifest-skrár, táknmyndir)tests/: Vitest-prófasafnwebsite/: Docusaurus-skjöl (með i18n undirwebsite/i18n/de/...)
Uppsetning og verkfæri
- Setja upp rótarháðleika:
npm ci - Skjöl (valkvætt):
cd website && npm ci - Skoða markmið:
make help
Lifandi þróun (web‑ext run)
- Hraður lykkjuferill í Firefox Desktop (aðeins yfirborðsprófanir á UI):
npx web-ext run --source-dir sources --target=firefox-desktop- Keyra í Thunderbird (ráðlagt fyrir MailExtensions):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- Ábendingar:
- Hafðu villugluggann opinn í Thunderbird (Verkfæri → Þróunarverkfæri → Villugluggi).
- MV3 atburðasíður eru svæfðar í bið; endurhlaða þarf viðbótina eftir kóðabreytingar, eða leyfa web‑ext að endurhlaða sjálfkrafa.
- Sum hegðun sem er aðeins í Firefox er frábrugðin; staðfestu ávallt í Thunderbird til að tryggja API-samræmi.
- Slóðir á Thunderbird-forrit (dæmi):
- Linux:
thunderbird(t.d./usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - Aðskilnaður prófíla: Notaðu sérstakan Thunderbird‑prófíl fyrir þróun til að hafa ekki áhrif á daglega stillingu þína.
Make-markmið (stafrófsröð)
Makefile staðlar algengar þróunarvinnslur. Keyrðu make help hvenær sem er til að fá eins línu samantekt af hverju markmiði.
Ábending: að keyra make án marks opnar einfalt Whiptail‑valmynd til að velja markmið.
| Markmið | Eins línu lýsing |
|---|---|
clean | Fjarlægja staðbundnar smíða-/forskoðunarafurðir (tmp/, web-local-preview/, website/build/). |
commit | Forsníða, keyra próf (þ.m.t. i18n), uppfæra changelog, gera commit og push. |
eslint | Keyra ESLint með flatri stillingu (npm run -s lint:eslint). |
help | Telja upp öll markmið með eins línu lýsingu (raðað). |
lint | web‑ext lint á sources/ (bráðabirgða manifest; hunsar ZIP; ekki banvænt). |
menu | Gagnvirk valmynd til að velja markmið og valkvæð viðföng. |
pack | Byggja ATN og LOCAL ZIP (keyrir linter; kallar pakkskriptuna). |
prettier | Forsníða geymsluna á staðnum (skrifar breytingar). |
prettier_check | Prettier í athugunarham (skrifar ekki); fellur ef endursníðing er nauðsynleg. |
prettier_write | Gælunafn fyrir prettier. |
test | Prettier (skrif), ESLint og síðan Vitest (þekja ef stillt). |
test_i18n | Aðeins i18n-próf: placeholderar/samræmi í viðbót + samræmi vefskjala. |
translate_app | Gælunafn fyrir translation_app. |
translation_app | Þýða UI-strengi apps úr sources/_locales/en/messages.json. |
translate_web_docs_batch | Þýða vefskjöl í gegnum OpenAI Batch API (mælt með). |
translate_web_docs_sync | Þýða vefskjöl samstundis (arfleifð, ekki batch). |
translate_web_index | Gælunafn fyrir translation_web_index. |
translation_web_index | Þýða UI á forsíðu/yfirborðslista/fótspjaldi (website/i18n/en/code.json → .../<lang>/code.json). |
web_build | Byggja skjöl í website/build (styður --locales / BUILD_LOCALES). |
web_build_linkcheck | Tengjaskoðun örugg án nets (sleppir fjartengingum HTTP[S]). |
web_build_local_preview | Staðbundin gh‑pages forskoðun; þjónustar sjálfvirkt á 8080–8090; valkvæð próf/tengjaskoðun. |
web_push_github | Ýta website/build á greinina gh-pages. |
Setningafræði valkosta
- Notaðu
make <command> OPTS="…"til að senda valkosti (mælt er með gæsalöppum). Hvert markmið hér fyrir neðan sýnir dæmi um notkun.
--
Ábendingar fyrir smíði fyrir staðbundin tungumál
- Byggja hlutmengi tungumála: stilltu
BUILD_LOCALES="en de"eða senduOPTS="--locales en,de"til vefmarkmiða. - Forskoða tiltekið tungumál:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
Smíða og pakka
- Byggja ZIP:
make pack - Býr til ATN og LOCAL ZIP í rót geymslunnar (ekki breyta afurðum í höndunum)
- Ábending: uppfærðu útgáfu í bæði
sources/manifest_ATN.jsonogsources/manifest_LOCAL.jsonáður en pakkað er - Handvirk uppsetning (þróun): Thunderbird → Verkfæri → Viðbætur og þemu → gír → Setja upp viðbót úr skrá… → veldu byggða ZIP‑skrána
Prófanir
- Fullt safn:
make test(Vitest) - Þekja (valkvætt):
npm i -D @vitest/coverage-v8- Keyrðu
make test; opnaðucoverage/index.htmlfyrir HTML‑skýrslu - Aðeins i18n:
make test_i18n(UI-lyklar/placeholderar/titlar + samræmi vefs eftir tungumáli og skjali með id/title/sidebar_label athugunum)
Villuleit og skráning
- Villugluggi: Verkfæri → Þróunarverkfæri → Villugluggi
- Kveikja/slökkva á ítarlegum loggum í keyrslu:
- Virkja:
messenger.storage.local.set({ debug: true }) - Slökkva:
messenger.storage.local.set({ debug: false }) - Lógskilaboð birtast meðan verið er að semja/senda svör
Skjöl (vefsíða)
- Þróunarþjónn:
cd website && npm run start - Byggja kyrrstæða síðu:
cd website && npm run build - Samsvarandi Make-markmið (stafrófsröð):
make web_build,make web_build_linkcheck,make web_build_local_preview,make web_push_github - Notkunardæmi:
- Aðeins EN, sleppa prófum/tengjaskoðun, enginn push:
make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run" - Öll tungumál, með prófum/tengjaskoðun, síðan push:
make web_build_local_preview && make web_push_github - Áður en birt er, keyrðu tengjaskoðun örugga án nets:
make web_build_linkcheck. - i18n: Enska býr í
website/docs/*.md; þýsk þýðing íwebsite/i18n/de/docusaurus-plugin-content-docs/current/*.md - Leit: Ef Algolia DocSearch umhverfisbreytur eru stilltar í CI (
DOCSEARCH_APP_ID,DOCSEARCH_API_KEY,DOCSEARCH_INDEX_NAME), notar síðan Algolia‑leit; annars fellur hún aftur á staðbundna leit. Á forsíðunni, ýttu á/eðaCtrl+Ktil að opna leitarreitinn.
Styrkja-endurbeiningarleið
website/src/pages/donate.js- Leið:
/donate(og/<locale>/donate) - Hegðun:
- Ef núverandi leið er með tungumál (t.d.
/de/donate), notaðu það - Annars, veldu besta samsvörun úr
navigator.languagesmiðað við stillt tungumál; fell aftur á sjálfgefið tungumál - Beinir á:
en→/docs/donation- aðrir →
/<locale>/docs/donation - Notar
useBaseUrltil réttrar meðhöndlunar á baseUrl - Inniheldur meta refresh +
noscripthlekk sem varaleið
Forskoðunarábendingar
- Hætta snyrtilega í Node‑forskoðun: opna
http://localhost:<port>/__stop(prentað eftirLocal server started). - Ef myndir hlaðast ekki í MDX/JSX, notaðu
useBaseUrl('/img/...')til að virðabaseUrlsíðunnar. - Forskoðunin ræsir fyrst; tengjaskoðunin keyrir á eftir og er ekki hindrandi (brotin ytri tengl við munu ekki stöðva forskoðun).
- Dæmi um forskoðunar‑URL:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/(prentað eftir “Local server started”). - Ytri tenglar í tengjaskoðun: Sumar ytri síður (t.d. addons.thunderbird.net) loka á vélmenni og geta sýnt 403 í tengjaskoðunum. Forskoðun ræsir samt; þetta er óhætt að hunsa.
Þýða vefinn
Hvað þú getur þýtt
- Aðeins vef-UI: forsíða, yfirlitsstika, fótspjald og aðrir UI‑strengir. Efni skjala er áfram aðeins á ensku í bili.
Hvar á að breyta
- Breyttu
website/i18n/<locale>/code.json(notaðuensem viðmið). Haltu plásshaldarum eins og{year},{slash},{ctrl},{k},{code1}óbreyttum.
Búa til eða endurnýja skrár
- Búa til vantaðar stubba fyrir öll tungumál:
npm --prefix website run i18n:stubs - Yfirskrifa stubba út frá ensku (eftir að hafa bætt við nýjum strengjum):
npm --prefix website run i18n:stubs:force - Valkostur fyrir eitt tungumál:
npx --prefix website docusaurus write-translations --locale <locale>
Þýða UI-strengi forsíðu/stikunnar/fótspjalds (OpenAI)
- Settu auðkenni einu sinni (skel eða .env):
export OPENAI_API_KEY=sk-...- Valkvætt:
export OPENAI_MODEL=gpt-4o-mini - Ein keyrsla (öll tungumál, sleppa en):
make translate_web_index - Takmarka við tiltekin tungumál:
make translate_web_index OPTS="--locales de,fr" - Yfirskrifa fyrirliggjandi gildi:
make translate_web_index OPTS="--force"
Staðfesting og endurtilraunir
- Þýðingarskriptið sannreynir lögun JSON, varðveitir plásshaldara með slaufusviga og tryggir að URL‑slóðir breytist ekki.
- Við misheppnaða staðfestingu reynir það aftur með endurgjöf allt að 2 sinnum áður en það heldur fyrirliggjandi gildum.
Forskoða þitt tungumál
- Þróunarþjónn:
npm --prefix website run start - Heimsæktu
http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/
Innsending
- Opnaðu PR með breyttu skránni/skránum
code.json. Haltu breytingum afmörkuðum og bættu við skjáskoti ef mögulegt er.
Öryggis- og stillingarábendingar
- Ekki commita
sources/manifest.json(búið til tímabundið í smíði) - Haltu
browser_specific_settings.gecko.idstöðugu til að varðveita uppfærslurásina
Varðveisla stillinga
- Geymsla: Allar notandastillingar búa í
storage.localog haldast yfir uppfærslur viðbótarinnar. - Uppsetning: Sjálfgefin gildi eru aðeins sett þegar lykill vantar algerlega (undefined).
- Uppfærsla: Flutningur fyllir aðeins upp í vantaða lykla; fyrirliggjandi gildum er aldrei yfirskrifað.
- Skema‑vísir:
settingsVersion(sem stendur1). - Lyklar og sjálfgefin gildi:
blacklistPatterns: string[]→['*intern*', '*secret*', '*passwor*']confirmBeforeAdd: boolean→falseconfirmDefaultChoice: 'yes'|'no'→'yes'warnOnBlacklistExcluded: boolean→true- Kóði: sjá
sources/background.js→initializeOrMigrateSettings()ogSCHEMA_VERSION.
Þróunarferli (að bæta við nýrri stillingu)
- Hækka
SCHEMA_VERSIONísources/background.js. - Bættu nýja lyklinum + sjálfgefnu gildi við hlutinn
DEFAULTSíinitializeOrMigrateSettings(). - Notaðu reglu „aðeins‑ef‑óskilgreint“ þegar sjálfgefnum gildum er sáð; ekki yfirskrifa fyrirliggjandi gildi.
- Ef stillingin er notandans sýnileg, tengdu hana í
sources/options.jsog bættu við staðfærðum strengjum. - Bættu við/lagaðu próf (sjá
tests/background.settings.migration.test.js).
Ábendingar fyrir handprófanir
- Herma eftir ferskri uppsetningu: hreinsaðu gagnamöppu viðbótarinnar eða ræstu með nýjum prófíl.
- Herma eftir uppfærslu: stilltu
settingsVersioná0ístorage.localog endurhladdu; staðfestu að fyrirliggjandi gildi haldist óbreytt og einungis vantar lyklar bætist við.
Úrræðaleit
- Gakktu úr skugga um að Thunderbird sé 128 ESR eða nýrri
- Notaðu villugluggann fyrir keyrsluvandamál
- Ef geymdar stillingar virðast ekki taka gildi, endurræstu Thunderbird og reyndu aftur. (Thunderbird getur geymt ástand milli setna; endurræsing tryggir að nýjar stillingar hlaðist inn.)
CI og þekja
- GitHub Actions (
CI — Tests) keyrir vitest með þröskuldum fyrir þekju (85% línur/föll/greinar/setningar). Ef þröskuldar nást ekki, fellur verkið. - Vinnuflæðið hleður upp gripnum
coverage-htmlmeð HTML‑skýrslunni; sæktu hann af keyrslusíðunni (Actions → nýjasta keyrsla → Artifacts).
Framlag
- Sjá CONTRIBUTING.md fyrir leiðbeiningar um greinar/commits/PR
- Ábending: Búðu til sérstakan Thunderbird‑þróunarprófíl fyrir prófanir til að hafa ekki áhrif á daglega prófílinn þinn.
Þýðingar
- Að keyra stór „allt → allt“ þýðingarverk getur verið hægt og kostnaðarsamt. Byrjaðu á hlutmengi (t.d. fá skjöl og 1–2 tungumál), farðu yfir niðurstöður og stækkaðu svo.
- Endurtilraunastefna: þýðingarverk framkvæma allt að 3 endurtilraunir með veldisvaxandi bið á API‑villum; sjá
scripts/translate_web_docs_batch.jsogscripts/translate_web_docs_sync.js.
Skjámyndir fyrir skjöl
-
Geymdu myndir undir
website/static/img/. -
Vísaðu í þær í MD/MDX í gegnum
useBaseUrl('/img/<filename>')svo slóðir virki meðbaseUrlsíðunnar. -
Eftir að hafa bætt við eða endurnefnt myndir undir
website/static/img/, staðfestu að allar tilvísanir noti ennuseBaseUrl('/img/…')og birtist í staðbundinni forskoðun. Táknmyndir (favicons) -
Fjölstærða
favicon.icoer búin til sjálfvirkt í öllum smíðaleiðum (Make + skript) í gegnumwebsite/scripts/build-favicon.mjs. -
Engin handvirk skref eru nauðsynleg; að uppfæra
icon-*.pngdugar. Yfirferðarráð -
Haltu front‑matter
idóbreyttu í þýddum skjölum; þýddu aðeinstitleogsidebar_labelþegar þau eru til staðar.
clean
- Tilgangur: fjarlægja staðbundnar smíða-/forskoðunarafurðir.
- Notkun:
make clean - Fjarlægir (ef til staðar):
tmp/web-local-preview/website/build/
commit
- Tilgangur: forsníða, prófa, uppfæra changelog, gera commit og push.
- Notkun:
make commit - Nánar: keyrir Prettier (skrif),
make test,make test_i18n; bætir við changelog þegar breytingar eru stigaðar; ýtir áorigin/<branch>.
eslint
- Tilgangur: keyra ESLint með flatri stillingu.
- Notkun:
make eslint
help
- Tilgangur: telja upp öll markmið með eins línu lýsingu.
- Notkun:
make help
lint
- Tilgangur: lint‑prófa MailExtension með
web-ext. - Notkun:
make lint - Athugasemdir: afritar tímabundið
sources/manifest_LOCAL.json→sources/manifest.json; hunsar byggð ZIP; viðvaranir fella ekki pípluna.
menu
- Tilgangur: gagnvirk valmynd til að velja Make‑markmið og valkvæð viðföng.
- Notkun: keyrðu
makeán viðfanga. - Athugasemdir: ef
whiptailer ekki tiltækt, fellur valmyndin aftur ámake help.
pack
- Tilgangur: byggja ATN og LOCAL ZIP (háð
lint). - Notkun:
make pack - Ábending: hækka útgáfur í bæði
sources/manifest_*.jsonáður en pakkað er.
prettier
- Tilgangur: forsníða geymsluna á staðnum.
- Notkun:
make prettier
prettier_check
- Tilgangur: staðfesta snið (engin skrif).
- Notkun:
make prettier_check
prettier_write
- Tilgangur: gælunafn fyrir
prettier. - Notkun:
make prettier_write
test
- Tilgangur: keyra Prettier (skrif), ESLint og síðan Vitest (þekja ef uppsett).
- Notkun:
make test
test_i18n
- Tilgangur: i18n‑miðað próf fyrir strengja‑ og vefskjalasamræmi.
- Notkun:
make test_i18n - Keyrir:
npm run test:i18nognpm run -s test:website-i18n.
translate_app / translation_app
- Tilgangur: þýða UI‑strengi viðbótar úr EN yfir í önnur tungumál.
- Notkun:
make translation_app OPTS="--locales all|de,fr" - Athugasemdir: varðveitir lykjaskipan og plásshaldara; skráir í
translation_app.log. Skript‑form:node scripts/translate_app.js --locales ….
translate_web_docs_batch / translate_web_docs_sync
- Tilgangur: þýða vefskjöl úr
website/docs/*.mdyfir íwebsite/i18n/<locale>/.... - Mælt með:
translate_web_docs_batch(OpenAI Batch API)- Notkun (flögg):
make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - Arfleifð stöðusetning er enn samþykkt:
OPTS="<doc|all> <lang|all>"
- Notkun (flögg):
- Hegðun: býr til JSONL, hleður upp, kannar á 30 sek. fresti, sækir niðurstöður, skrifar skrár.
- Athugið: batch‑verk getur tekið allt að 24 klst. (samkvæmt lotuglugga OpenAI). Skjár sýnir liðinn tíma við hverja könnun.
- Umhverfi:
OPENAI_API_KEY(krafa), valkvættOPENAI_MODEL,OPENAI_TEMPERATURE,OPENAI_BATCH_WINDOW(sjálfgefið 24h),BATCH_POLL_INTERVAL_MS. - Arfleifð:
translate_web_docs_sync- Notkun (flögg):
make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - Arfleifð stöðusetning er enn samþykkt:
OPTS="<doc|all> <lang|all>"
- Notkun (flögg):
- Hegðun: samstilltar beiðnir fyrir hvert par (engin batch‑samþjöppun).
- Athugasemdir: Gagnvirkar fyrirspurnir þegar
OPTSer sleppt. Báðir hamir varðveita kóðablokkir/innfeldan kóða og halda front‑matteridóbreyttu; skráir ítranslation_web_batch.log(batch) eðatranslation_web_sync.log(sync).
translate_web_index / translation_web_index
- Tilgangur: þýða vef‑UI‑strengi (forsíða, yfirlitsstika, fótspjald) úr
website/i18n/en/code.jsonyfir á öll tungumál undirwebsite/i18n/<locale>/code.json(ánen). - Notkun:
make translate_web_indexeðamake translate_web_index OPTS="--locales de,fr [--force]" - Kröfur: export
OPENAI_API_KEY(valkvætt:OPENAI_MODEL=gpt-4o-mini). - Hegðun: sannreynir JSON‑byggingu, varðveitir plásshaldara með slaufusviga, heldur URL‑slóðum óbreyttum og reynir aftur með endurgjöf við villur í staðfestingu.
web_build
- Tilgangur: byggja skjölavefinn í
website/build. - Notkun:
make web_build OPTS="--locales en|de,en|all"(eða stilltuBUILD_LOCALES="en de") - Innviðir:
node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …]. - Háðir: keyrir
npm ciíwebsite/aðeins efwebsite/node_modules/@docusaurusvantar.
web_build_linkcheck
- Tilgangur: tengjaskoðun örugg án nets.
- Notkun:
make web_build_linkcheck OPTS="--locales en|all" - Athugasemdir: byggir í
tmp_linkcheck_web_pages; endurskrifar GH PagesbaseUrlí/; sleppir fjartengingum HTTP(S).
web_build_local_preview
- Tilgangur: staðbundin gh‑pages forskoðun með valkvæðum prófum/tengjaskoðun.
- Notkun:
make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]" - Hegðun: reynir fyrst Node‑forskoðunarþjón (
scripts/preview-server.mjs, styður/__stop), fellur aftur ápython3 -m http.server; þjónustar á 8080–8090; PID íweb-local-preview/.server.pid.
web_push_github
- Tilgangur: ýta
website/buildá greininagh-pages. - Notkun:
make web_push_github
Ábending: stilltu NPM=… til að yfirskrifa pakkastjórann sem Makefile notar (sjálfgefið npm).