Wiñakuy
Ruray Kamachi
Qillqakuna kunanyachiy sapallan website/docs (Inglés) nisqapi. website/i18n/<locale>/… nisqapi tikrakuna automáticuta paqarichisqa, hinallataq makiwan mana ch'iqllanaychu. Tikrakuna llamk'aykunata (make translate_web_docs_batch hina) llamk'achiy, llocalizadotaq willañiqikuna kunanyachinaykipaq.
Ñawpaq munasqakuna
- Node.js 22+ wan npm (Node 22wan qhawarisqa)
- Thunderbird 128 ESR utaq musuq (makiwan probarpaq)
Proyektupa siq'i (hatun ñawpaq)
- Root: packaging script
distribution_zip_packer.sh, docs, screenshots sources/: ñawpaq add-on kodin (background, options/popup UI, manifests, icons)tests/: Vitest suitewebsite/: Docusaurus docs (i18nwebsite/i18n/de/...ukhunpi)
Churay & Llamk'anakuna
- Root dependenciaskuna churay:
npm ci - Docs (uyariypaq):
cd website && npm ci - Targetkunata maskhay:
make help
Kawsaypi ruwakuy (web‑ext run)
- Utqaypa kutichiy Firefox Desktoppi (UI smoke‑tests sapallanpaq):
npx web-ext run --source-dir sources --target=firefox-desktop- Thunderbirdpi purichiy (MailExtensionspaq aqllasqa):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- Tipkuna:
- Thunderbirdpa Error Console nisqata kichasqa kachay (Tools → Developer Tools → Error Console).
- MV3 event p'anqakuna qhipaman waqyasqa kachkan; kodeta hukinchawpaq add‑onta musuqmanta chaqna, utaq web‑extqa sapaqta automáticuta chaqnachun.
- Firefox‑sapaqmi aswanta hukninakunam kachkan; hinaspaqa Thunderbirdpi qatiyña, API equivalenciata qhawariy.
- Thunderbird binario ñan (qhawarikuqkunapaq):
- Linux:
thunderbird(e.g.,/usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - Perfilpa sapallan chanin: Llamk'aypaq huk Thunderbirdda perfilta llamk'achiy, manan sapa p'unchaw llamk'aykita maqchurinaykipaq.
Make tarjetakuna (alfabétikuta qatiq)
Makefileqa común ruwakuy qatillaykuna standar churan. make help nisqata waqtaykama ruwariy, target sapaqpaq huk lineapi amaqonawan.
Tip: make targetmana rurayqa, aslla Whiptail menuta kichan target akllanankupaq.
| Target | Huk‑lineapi amaqonawan |
|---|---|
clean | Lokal build/preview ruwayninakunata qichuy (tmp/, web-local-preview/, website/build/). |
commit | Formateay, testkuna purichiy (i18n chaywan), changelog kunanyachiy, commit & push. |
eslint | ESLintta purichiy flat configwan (npm run -s lint:eslint). |
help | Llapan targetkunata sut'inchawan amaqonawanwan (ordenasqa) qillqay. |
lint | web‑ext lint sources/pi (sami manifest; ZIPkuna qawachkuchkan; mana fatal). |
menu | Interactivo menuta kichan target akllanaykipaq hinallataq akllanakuy argumento. |
pack | ATN & LOCAL ZIPkunata ruray (linterta purichin; packer scriptsa waqyay). |
prettier | Repositorioqta kaypi formateay (qillqaykunata tikray). |
prettier_check | Prettier check modopi (mana qillqan); mana allin formatoqa pantachin. |
prettier_write | Alias prettierpaq. |
test | Prettier (qillqa), ESLint, chaymanta Vitest (coverage kasqa kaptinqa). |
test_i18n | i18n‑sapallan testkuna: add‑on placeholders/paridad + website paridad. |
translate_app | Alias translation_apppaq. |
translation_app | App UI simikunata tikray sources/_locales/en/messages.jsonmanta. |
translate_web_docs_batch | Website docskunata tikray OpenAI Batch API‑wan (aqllasqa). |
translate_web_docs_sync | Website docskunata tikray sincrónicamente (legado, mana batch). |
translate_web_index | Alias translation_web_indexpaq. |
translation_web_index | Qallariq p'anqa/navbar/footer UI tikray (website/i18n/en/code.json → .../<lang>/code.json). |
web_build | Docskunata ruwachiy website/buildman (sustenta --locales / BUILD_LOCALES). |
web_build_linkcheck | Offline‑safe link check (hawa HTTP[S] astawan saqichin). |
web_build_local_preview | Lokal gh‑pages preview; automáticuta 8080–8090pi servin; uyariykuna tests/link‑check nisqawan. |
web_push_github | website/buildta pusha gh-pages ramasman. |
Opcionespa sintaxis
make <command> OPTS="…"nisqata llamk'ay opciones apachinaykipaq (comillakunawan qhaway). Kayman uraypi target sapaqpaq ruwanapaq ruwakuna qhawarichkan.
--
Localkunapaq build tipkuna
- Localkuna sapaqta ruwariy:
BUILD_LOCALES="en de"nisqata churay utaqOPTS="--locales en,de"nisqata web targetkunaman apachiy. - Huk lokalmanta ñawpaq qhawanaykipaq:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
Ruray & Paqichiy
- ZIPkunata ruray:
make pack - Repo muyo patapi ATN hinallataq LOCAL ZIPkunata paqarichin (artifactsqa makiwan ama tikraychu)
- Tip: versiónta iskaypi kunanyachiy
sources/manifest_ATN.jsonhinallataqsources/manifest_LOCAL.jsonpi, paqichinaykipaq. - Makiwan churay (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → rurasqa ZIPta akllay
Pruebas
- Llapan suite:
make test(Vitest) - Cobertura (uyariypaq):
npm i -D @vitest/coverage-v8make testpurichiy;coverage/index.htmlkichay HTML reportpaq- i18n sapallan:
make test_i18n(UI keys/placeholders/titles + website per‑locale per‑doc paridad id/title/sidebar_label qhawaywan)
Depuración & Logs
- Error Console: Tools → Developer Tools → Error Console
- Verbose logskunata kawsayninpi wakchay/qarquy:
- Activar:
messenger.storage.local.set({ debug: true }) - Apagar:
messenger.storage.local.set({ debug: false }) - Qillqakunaqa qillqakusqanku chay ñawinchay/sayachiy kutinpas.
Docs (website)
- Dev server:
cd website && npm run start - Sitio estático ruwariy:
cd website && npm run build - Make equivalentes (alfabétikuta):
make web_build,make web_build_linkcheck,make web_build_local_preview,make web_push_github - Ejemplokuna:
- EN sapallan, test/link‑check saqispa, mana push:
make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run" - Llapan localkuna, tests/link‑checkwan, chaymanta push:
make web_build_local_preview && make web_push_github - Qhapaq llamk'ayman, offline‑safe link checkta purichiy:
make web_build_linkcheck. - i18n: Inglésqa
website/docs/*.mdukhun kawsan; Alemán tikrakunaqawebsite/i18n/de/docusaurus-plugin-content-docs/current/*.mdukhun. - Maskhay: Algolia DocSearch ambiente variablekuna CI‑pi churakusqa kaptinqa (
DOCSEARCH_APP_ID,DOCSEARCH_API_KEY,DOCSEARCH_INDEX_NAME), sitioq Algolia maskhayta llamk'an; manam kaptiqa maskhay lokalman kutin. Qallariq p'anqapi,/utaqCtrl+Kmañakuy maskhay k'itirata kichanapaq.
Qolla‑qonay (Donate) kutichiy ñan
website/src/pages/donate.js- Ruta:
/donate(hinallataq/<locale>/donate) - Kawsaynin:
- Kunan rutaqa huk lokaltawan (e.g.,
/de/donate) kachkaptinqa, chayta llamk'an - Mana chayqa,
navigator.languagesnisqamanta aswan allin tupaqta akllan konfiguradasqawan; chaymanaqa default localeman kutin - Kayman kutichin:
en→/docs/donation- hukninakuna →
/<locale>/docs/donation useBaseUrlnisqata llamk'an baseUrl allinta chaskinaykipaq- Meta refresh +
noscriptt'inkita churaspa, fall‑back hina
Ñawpaq qhawariq tipkuna
- Node previewta allin qichunaykipaq:
http://localhost:<port>/__stopkichay (Local server startedñawpaqta qillqasqa). - Ima imagenaskuna MDX/JSXpi mana apachkaptin,
useBaseUrl('/img/...')llamk'achiy sitioqpabaseUrlta yuyachinaykipaq. - Ñawpaq previewmi qallarin; chaymanta link check hamuqmi, mana hark'ay (hawa t'inkikuna p'akisqa kaptinpas previewqa mana saykuykachkan).
- Ejemplo preview URL:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/(“Local server started” ñawpaq qillqasqapi qhawarin). - Hawa t'inkikuna link‑checkpi: Ima hawa sitioskuna (e.g., addons.thunderbird.net) robotkuna maskhayta hark'an, 403 rikuchinqa. Previewqa qallarin; kaykunataqa ama phiñakuychu.
Website tikray
Imakunata tikrakuyta atinki
- Website UI sapallan: qallariq p'anqa, navbar, footer, hinallataq huk UI simikuna. Docskunaqa kunanmi Inglés‑sapallan kachkan.
Maypita ch'iqllay
website/i18n/<locale>/code.jsonch'iqllay (enhina qhawariy).{year},{slash},{ctrl},{k},{code1}hina placeholdersqa imaraykuchus mana hukllachisqachu kachun.
Willañiqikunata paqarichiy utaq kunanyachiy
- Llapan localkunapaq q'ipi wiñachiq stubs paqarichiy:
npm --prefix website run i18n:stubs - Inglesmanta stubsqa hunt'achiy (musuq simikuna yapaspa qhipa):
npm --prefix website run i18n:stubs:force - Huk sapallan localepaq alternativa:
npx --prefix website docusaurus write-translations --locale <locale>
Qallariq p'anqa/navbar/footer UI simikunata tikray (OpenAI)
- Hukk'ipa credencialkuna churay (shell utaq .env):
export OPENAI_API_KEY=sk-...- Uyariypaq:
export OPENAI_MODEL=gpt-4o-mini - Huk kutilla (llapan localkuna, en saqispa):
make translate_web_index - Kay localkunaman huch'uyachiy:
make translate_web_index OPTS="--locales de,fr" - Chaymi existente valoriskunata qhipaman qillqay:
make translate_web_index OPTS="--force"
Chiqaqchay & kutichiy
- Tikray scriptsqa JSON ukhu ruranata chiqaqchachin, k'urkunawan (curly‑brace) placeholdersqa waqaychan, URLkuna mana hukllachisqa kachun.
- Chiqaqchayqa pantaspa, willakuywan 2 cutitaqmi kutichin, chaymanta existente valoriskunata qhispichin.
Lokaleykita ñawpaq qhawariy
- Dev server:
npm --prefix website run start - Kayman ayway:
http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/
Apachiy
- PR kichay ch'iqllasqa
code.jsonwillañiqikunawan. Hukllaña tikraykunata waqaychay, aslla pantallapa qillqasqata (screenshot) churay atipaspa.
Seguridad & Configuración tipkuna
sources/manifest.jsonama commit‑chaychu (buildqa huk ratupi paqarichin)browser_specific_settings.gecko.idestable qichuy, update chakanata waqaychanaykipaq
Settings persistenciata
- Allqay: Llapan usuariopa ajusteskunan
storage.localukhun kawsanku, hinallataq add‑on kunan‑kunanchaqtinkama qhispichasqalla kawsanku. - Instalación: Predeterminado chaninakunam churasqa, llavesqa huch'uy (undefined) kaptinlla.
- Kunanyachiy: Migraciónqa llaves huch'uykuna sapallan hunt'achin; kachkasqa valoriskunataqa manaraqmi tikrachkanchu.
- Schema chinpu:
settingsVersion(kunan1). - Llavekuna hinallataq predeterminadokuna:
blacklistPatterns: string[]→['*intern*', '*secret*', '*passwor*']confirmBeforeAdd: boolean→falseconfirmDefaultChoice: 'yes'|'no'→'yes'warnOnBlacklistExcluded: boolean→true- Código: qhaway
sources/background.js→initializeOrMigrateSettings()hinallataqSCHEMA_VERSION.
Ruwakuy llamk'ay (musuq ajustes yapay)
SCHEMA_VERSIONnisqata wiñachiysources/background.jsukhun.- Musuq llave + predeterminadoqa yapay
DEFAULTSobjetomaninitializeOrMigrateSettings()ukhun. - “only‑if‑undefined” nisqa ruwanawan defaults seed‑chay; kachkasqa valoriskunata ama tikraychu.
- Ajustesqa kay usuariopa qhawanaypaqmi kaptin,
sources/options.jsukhun ch'aninchay, simikunata llocalizachispa. - Testkuna yapay/hunt'achiy (qhaway
tests/background.settings.migration.test.js).
Makiwan probar tipkuna
- Musuq instala simulasiyuta ruwachiy: extensiónpa datapa q'ipinta pichay utaq musuq perfilwan qallariy.
- Kunanyachiy simulasiyuta ruwachiy:
settingsVersionta0man ch'iqllaystorage.localukhun, chaymanta musuqmanta chaqna; kachkasqa valoriskuna mana tikrasqachu kachkanku, llaves huch'uykuna sapallan yapasqama.
Solución de problemas
- Thunderbird 128 ESR utaq musuq kananpaq qhawariy
- Runtime ch'iqllakunaqa Error Consolepi qhaway
- Almacenadasqa ajustesqa mana allin ruwanaykipaq rikch'akuptin, Thunderbirdta qhichuy chaymanta yapamanta qallariy. (Thunderbirdqa sesionkunapaq estado waqaychawan; musuq qallariyqa musuq ajusteskunata apachin).
CI & Cobertura
- GitHub Actions (
CI — Tests)qa vitestta purichin cobertura umbralniykuwan (85% lines/functions/branches/statements). Umbralqa mana chaskisqa kaptinqa, llamk'ayqa pantan. - Workflowqa artifact
coverage-htmlta uppaqarin HTML reportwan; run p'anqamanta uraykuy (Actions → huk ñawpaq run → Artifacts).
Yanapay
- Qhaway CONTRIBUTING.md ramas/commit/PR pautakunapaq
- Tip: Huk Thunderbirdda desarrollo perfilta ruway, qhawariypaq, sapa p'unchaw perfilniyta ama maqchurinaykipaq.
Tikraykuna
- Hatun “all → all” tikray llamk'aykuna suni, k'achallachu kay. Huch'uymanta qallariy (e.g., wakin docskuna hinallataq 1–2 localkuna), qhaway, chaymanta yapay.
- Kutichiy politika: tikray llamk'aykuna 3 cuti kutichin API pantasqakunapi, backoff exponencialniyuq; qhaway
scripts/translate_web_docs_batch.jshinallataqscripts/translate_web_docs_sync.js.
Docspaq pantallapa capturakuna
-
Imaymana imagenakunata waqaychay
website/static/img/ukhun. -
MD/MDXpi kayninta qhawariy
useBaseUrl('/img/<filename>')nisqawan, ñanankuna sitioqpabaseUrlwan allinta llamk'anankupaq. -
website/static/img/ukhun imagenata yapaspa utaq sutichaykuspa, llapan t'inkikunauseBaseUrl('/img/…')taqa todavía llamk'achkanku chaymanta lokal previewpi ruranankuchu qhaway. Favicons -
Multi‑size
favicon.icoqa automáticuta rurasqa llapan build ñanninkunapi (Make + scripts)website/scripts/build-favicon.mjswan. -
Mana makiwan ruwanakuchu;
icon-*.pngkunanyachiyllan aswan allin. Qhaway tip -
Front‑matter
idta ama tikraychu docs tikrasqapi;titlehinallataqsidebar_labellla tikray kaykunam kaptin.
clean
- Tarpuy: lokal build/preview ruwayninakunata qichuy.
- Llamk'ay:
make clean - Qichun (kaptin):
tmp/web-local-preview/website/build/
commit
- Tarpuy: formateay, test, changelog kunanyachiy, commit, hinallataq push.
- Llamk'ay:
make commit - Nisqapi: Prettierta (qillqa),
make test,make test_i18npurichin; changelogta yapay musuq diffkuna staged kaptin;origin/<branch>man push.
eslint
- Tarpuy: ESLintta flat configwan purichiy.
- Llamk'ay:
make eslint
help
- Tarpuy: llapan targetkunata huk‑linea amaqonawanwan sut'ichiy.
- Llamk'ay:
make help
lint
- Tarpuy: MailExtensionta lint‑chay
web-extwan. - Llamk'ay:
make lint - Notaskuna:
sources/manifest_LOCAL.json→sources/manifest.jsonsapallan k'achkan; rurasqa ZIPkunata saqichin; warninqkunaqa manam pipeline‑ta pantachinku.
menu
- Tarpuy: menuta interactivo kichan Make target akllanaykipaq hinallataq ukhu argumento.
- Llamk'ay:
maketa mana argumentowan purichiy. - Notaskuna:
whiptailmana kachkaptinqa, menutamake helpman churan.
pack
- Tarpuy: ATN hinallataq LOCAL ZIPkunata ruwachiy (
lintqa reqsi). - Llamk'ay:
make pack - Tip: versiónkunata iskaypi wiñachiy
sources/manifest_*.jsonñawpaq, paqichinaykipaq.
prettier
- Tarpuy: repositorio ukhunpi formateay.
- Llamk'ay:
make prettier
prettier_check
- Tarpuy: formato qhaway (mana qillqan).
- Llamk'ay:
make prettier_check
prettier_write
- Tarpuy:
prettierpaq alias. - Llamk'ay:
make prettier_write
test
- Tarpuy: Prettier (qillqa), ESLint, chaymanta Vitest (coverage kasqa kaptinqa).
- Llamk'ay:
make test
test_i18n
- Tarpuy: i18n‑qhawasqa testkuna add‑on simikuna hinallataq website docskunapaq.
- Llamk'ay:
make test_i18n - Purichin:
npm run test:i18nhinallataqnpm run -s test:website-i18n.
translate_app / translation_app
- Tarpuy: add‑on UI simikunata tikray ENmanta huk localkunaman.
- Llamk'ay:
make translation_app OPTS="--locales all|de,fr" - Notas: llave k'askikunata hinallataq placeholdersqa waqaychan;
translation_app.logman qillqan; script form:node scripts/translate_app.js --locales ….
translate_web_docs_batch / translate_web_docs_sync
- Tarpuy: website docskunata tikray
website/docs/*.mdmantawebsite/i18n/<locale>/...man. - Aqllasqa:
translate_web_docs_batch(OpenAI Batch API)- Llamk'ay (wank'a):
make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - Legado posicionalqa hukllaña kasqan:
OPTS="<doc|all> <lang|all>"
- Llamk'ay (wank'a):
- Kawsaynin: JSONL ruwachin, uppaqarin, 30s sapa kuti qhawachin, uhurmanta uraykachin, willañiqikunata qillqachin.
- Nota: batch llamk'ayqa 24 horas‑kamaqa hamuq kachkan (OpenAI batch ventana nisqamanta). Consolaqa sapa qhawachisqapi pacha lluqsiyta rikuchin.
- Ambiente:
OPENAI_API_KEY(reqsi), opcionalOPENAI_MODEL,OPENAI_TEMPERATURE,OPENAI_BATCH_WINDOW(default 24h),BATCH_POLL_INTERVAL_MS. - Legado:
translate_web_docs_sync- Llamk'ay (wank'a):
make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - Legado posicionalqa hukllaña kasqan:
OPTS="<doc|all> <lang|all>"
- Llamk'ay (wank'a):
- Kawsaynin: par sapallan sincrónicuta mañakuykuna (mana batch qhawariy).
- Notas:
OPTSsaqispaqa, interactivo tapukuykuna; iskay modokunapiqa code blocks/inline code waqaychasqa kachkan, front‑matteridmana tikrasqa;translation_web_batch.log(batch) utaqtranslation_web_sync.log(sync)man qillqan.
translate_web_index / translation_web_index
- Tarpuy: website UI simikunata tikray (qallariq p'anqa, navbar, footer)
website/i18n/en/code.jsonmanta llapan localkunamanwebsite/i18n/<locale>/code.jsonukhunpi (ensaqispa). - Llamk'ay:
make translate_web_indexutaqmake translate_web_index OPTS="--locales de,fr [--force]" - Reqsisqa:
OPENAI_API_KEYapachiy (opcional:OPENAI_MODEL=gpt-4o-mini). - Kawsaynin: JSON ukhu ruranata chiqaqchachin, k'urkunawan placeholders waqaychan, URLkuna mana tikrachkan, hinallataq chiqaqchay pantasqapi willakuywan kutichin.
web_build
- Tarpuy: docs sitioqta ruwachiy
website/buildman. - Llamk'ay:
make web_build OPTS="--locales en|de,en|all"(utaqBUILD_LOCALES="en de"ta churay) - Ukhupi:
node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …]. - Depkuna:
npm cita purichinwebsite/ukhun,website/node_modules/@docusaurusmana kachkaptin.
web_build_linkcheck
- Tarpuy: offline‑safe link check.
- Llamk'ay:
make web_build_linkcheck OPTS="--locales en|all" - Notas:
tmp_linkcheck_web_pagesman ruwachin; GH PagesbaseUrlta/man ñit'in; hawa HTTP(S) t'inkikunata saqichin.
web_build_local_preview
- Tarpuy: lokal gh‑pages preview opcional tests/link‑checkwan.
- Llamk'ay:
make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]" - Kawsaynin: ñawpaqmi Node preview serverta yachachin (
scripts/preview-server.mjs,/__stopta sustentan), ama kaptinpython3 -m http.serverman kutin; 8080–8090pi servin; PIDweb-local-preview/.server.pidukhun.
web_push_github
- Tarpuy:
website/buildta pushagh-pagesramasman. - Llamk'ay:
make web_push_github
Tip: NPM=…ta churay Makefile llamk'achiq paquete manejadorta t'aqllanaykipaq (defaultqa npm).