Vývoj
Průvodce vývojem
Upravujte pouze anglickou verzi; překlady se propagují
Aktualizujte dokumentaci pouze pod website/docs (angličtina). Překlady pod website/i18n/<locale>/… jsou generované a neměly by se upravovat ručně. K obnovení lokalizovaného obsahu použijte překladové úlohy (např. make translate_web_docs_batch).
Předpoklady
- Node.js 22+ a npm (testováno s Node 22)
- Thunderbird 128 ESR nebo novější (pro ruční testování)
Struktura projektu (přehled)
- Kořen: balicí skript
distribution_zip_packer.sh, dokumentace, snímky obrazovky sources/: hlavní kód doplňku (background, UI možností/vyskakovacího okna, manifesty, ikony)tests/: sada testů Vitestwebsite/: dokumentace Docusaurus (s i18n podwebsite/i18n/de/...)
Instalace a nástroje
- Instalace kořenových závislostí:
npm ci - Dokumentace (volitelné):
cd website && npm ci - Zobrazení cílů:
make help
Živý vývoj (web‑ext run)
- Rychlý cyklus ve Firefoxu pro počítač (pouze kouřové testy UI):
npx web-ext run --source-dir sources --target=firefox-desktop- Spustit v Thunderbirdu (preferováno pro MailExtensions):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- Tipy:
- Nechte otevřenou Chybovou konzoli Thunderbirdu (Nástroje → Nástroje pro vývojáře → Chybová konzole).
- Stránky událostí MV3 jsou při nečinnosti uspávány; po změnách kódu doplněk znovu načtěte, nebo nechte web‑ext provést auto‑reload.
- Některá chování pouze ve Firefoxu se liší; vždy ověřte v Thunderbirdu kvůli paritě API.
- Cesty k binárkám Thunderbirdu (příklady):
- Linux:
thunderbird(např./usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - Izolace profilu: Pro vývoj používejte samostatný profil Thunderbirdu, abyste neovlivnili své denní prostředí.
Cíle Make (abecedně)
Makefile sjednocuje běžné vývojové postupy. Pusťte make help kdykoli pro jednořádkové shrnutí každého cíle.
Tip: spuštění make bez cíle otevře jednoduché menu Whiptail pro výběr cíle.
| Cíl | Jednořádkový popis |
|---|---|
clean | Odstranit lokální artefakty buildu/preview (tmp/, web-local-preview/, website/build/). |
commit | Formátovat, spustit testy (vč. i18n), aktualizovat changelog, commit a push. |
eslint | Spustit ESLint přes flat config (npm run -s lint:eslint). |
help | Vypsat všechny cíle s jednořádkovou dokumentací (seřazené). |
lint | web‑ext lint na sources/ (dočasný manifest; ignoruje ZIPy; nefatální). |
menu | Interaktivní menu pro výběr cíle a volitelných argumentů. |
pack | Sestavit ATN a LOCAL ZIPy (spustí linter; volá balicí skript). |
prettier | Naformátovat repozitář na místě (zapíše změny). |
prettier_check | Prettier v režimu kontroly (bez zápisu); selže, pokud je potřeba přeformátovat. |
prettier_write | Alias pro prettier. |
test | Prettier (zápis), ESLint, poté Vitest (coverage, pokud je nastaven). |
test_i18n | Pouze i18n testy: zástupné symboly/parita doplňku + parita webu. |
translate_app | Alias pro translation_app. |
translation_app | Přeložit řetězce UI aplikace z sources/_locales/en/messages.json. |
translate_web_docs_batch | Přeložit webovou dokumentaci přes OpenAI Batch API (preferováno). |
translate_web_docs_sync | Přeložit webovou dokumentaci synchronně (legacy, bez batch). |
translate_web_index | Alias pro translation_web_index. |
translation_web_index | Přeložit UI domovské stránky/navigace/patičky (website/i18n/en/code.json → .../<lang>/code.json). |
web_build | Sestavit dokumenty do website/build (podporuje --locales / BUILD_LOCALES). |
web_build_linkcheck | Bezpečná kontrola odkazů offline (přeskakuje vzdálené HTTP[S]). |
web_build_local_preview | Místní náhled gh‑pages; automaticky naslouchá na 8080–8090; volitelné testy/kontrola odkazů. |
web_push_github | Odeslat website/build do větve gh-pages. |
Syntaxe pro volby
- Použijte
make <command> OPTS="…"pro předání voleb (doporučeny uvozovky). Každý cíl níže uvádí příklad použití.
--
Tipy pro build lokalizací
- Sestavte podmnožinu lokalizací: nastavte
BUILD_LOCALES="en de"nebo předejteOPTS="--locales en,de"webovým cílům. - Náhled konkrétní lokalizace:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
Sestavení a balení
- Sestavit ZIPy:
make pack - Vytvoří ATN a LOCAL ZIPy v kořeni repozitáře (artefakty neupravujte ručně)
- Tip: před balením aktualizujte verzi jak v
sources/manifest_ATN.json, tak vsources/manifest_LOCAL.json - Ruční instalace (vývoj): Thunderbird → Nástroje → Doplňky a motivy → ozubené kolo → Instalovat doplněk ze souboru… → vyberte sestavený ZIP
Test
- Plná sada:
make test(Vitest) - Coverage (volitelné):
npm i -D @vitest/coverage-v8- Spusťte
make test; otevřetecoverage/index.htmlpro HTML report - Jen i18n:
make test_i18n(klíče/zástupné symboly/tituly UI + parita webu za lokalitu a dokument s kontrolami id/title/sidebar_label)
Ladění a logy
- Chybová konzole: Nástroje → Nástroje pro vývojáře → Chybová konzole
- Přepínání podrobných logů za běhu:
- Zapnout:
messenger.storage.local.set({ debug: true }) - Vypnout:
messenger.storage.local.set({ debug: false }) - Logy se zobrazují při psaní/odesílání odpovědí
Dokumentace (web)
- Dev server:
cd website && npm run start - Sestavení statického webu:
cd website && npm run build - Ekvivalenty v Make (abecedně):
make web_build,make web_build_linkcheck,make web_build_local_preview,make web_push_github - Příklady použití:
- Jen EN, přeskočit testy/kontrolu odkazů, bez push:
make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run" - Všechny jazyky, s testy/kontrolou odkazů, poté push:
make web_build_local_preview && make web_push_github - Před publikováním spusťte bezpečnou kontrolu odkazů offline:
make web_build_linkcheck. - i18n: Angličtina je v
website/docs/*.md; německé překlady vwebsite/i18n/de/docusaurus-plugin-content-docs/current/*.md - Vyhledávání: Pokud jsou v CI nastaveny proměnné prostředí Algolia DocSearch (
DOCSEARCH_APP_ID,DOCSEARCH_API_KEY,DOCSEARCH_INDEX_NAME), web použije vyhledávání Algolia; jinak spadne na lokální vyhledávání. Na domovské stránce stiskněte/neboCtrl+Kpro otevření vyhledávacího pole.