Skip to main content

Әзірлеу


Әзірлеу нұсқаулығы

Тек ағылшын нұсқасын өңдеңіз; аудармалар таратылады

Құжаттаманы тек website/docs (ағылшынша) астында жаңартыңыз. website/i18n/<locale>/… астындағы аудармалар генерацияланады және қолмен өңделмеуі тиіс. Локализацияланған мазмұнды жаңарту үшін аударма тапсырмаларын пайдаланыңыз (мыс., make translate_web_docs_batch).

Алдын ала талаптар

  • Node.js 22+ және npm (Node 22-мен тексерілген)
  • Thunderbird 128 ESR немесе жаңарақ (қолмен тестілеу үшін)

Жоба құрылымы (жоғары деңгей)

  • Түбір: орау скрипті distribution_zip_packer.sh, құжаттар, скриншоттар
  • sources/: негізгі қондырма коды (фондық, опциялар/қалқып шығатын UI, манифестер, иконкалар)
  • tests/: Vitest жинағы
  • website/: Docusaurus құжаттары (i18n website/i18n/de/... ішінде)

Орнату және құралдар

  • Түбір тәуелділіктерін орнату: npm ci
  • Құжаттар (қосымша): cd website && npm ci
  • Мақсаттарды көру: make help

Тікелей әзірлеу (web‑ext run)

  • Firefox Desktop-та жедел цикл (тек UI smoke-тесттері):
  • npx web-ext run --source-dir sources --target=firefox-desktop
  • Thunderbird-та іске қосу (MailExtensions үшін ұсынылады):
  • npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"
  • Кеңестер:
  • Thunderbird қателер консольін ашық ұстаңыз (Tools → Developer Tools → Error Console).
  • MV3 оқиға беттері бос тұрған кезде тоқтатылады; код өзгерістерінен кейін қондырманы қайта жүктеңіз немесе web‑ext авто-қайта жүктеуін пайдаланыңыз.
  • Тек Firefox-тағы кейбір мінез-құлықтар өзгеше; API сәйкестігін Thunderbird-та әрқашан тексеріңіз.
  • Thunderbird орындалатын файл жолдары (мысалдар):
  • Linux: thunderbird (мыс., /usr/bin/thunderbird)
  • macOS: /Applications/Thunderbird.app/Contents/MacOS/thunderbird
  • Windows: "C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
  • Профильді оқшаулау: Күнделікті баптауларыңызға әсер етпеу үшін әзірлеуге бөлек Thunderbird профилін қолданыңыз.

Make мақсаттары (алфавит бойынша)

Makefile ортақ әзірлеу ағындарын біріздендіреді. Әрбір мақсаттың бір жолдық сипаттамасын көру үшін кез келген уақытта make help іске қосыңыз.

Кеңес: make мақсатсыз іске қосылса, мақсатты таңдауға арналған қарапайым Whiptail мәзірі ашылады.

МақсатБір жолдық сипаттама
cleanЖергілікті құрастыру/превью артефакттарын жою (tmp/, web-local-preview/, website/build/).
commitФорматтау, тесттерді іске қосу (i18n қоса), өзгерістер журналын жаңарту, commit & push.
eslintESLint-ті flat конфиг арқылы іске қосу (npm run -s lint:eslint).
helpБарлық мақсаттарды бір жолдық сипаттамамен тізімдеу (сұрыпталған).
lintweb‑ext lint sources/ бойынша (уақытша манифест; ZIP-тер еленбейді; фатал емес).
menuМақсат пен қосымша аргументтерді таңдауға арналған интерактивті мәзір.
packATN және LOCAL ZIP-терін құрастыру (линтерді іске қосады; packer скриптін шақырады).
prettierРепозиторийді орнында форматтау (өзгерістерді жазады).
prettier_checkPrettier тексеру режимі (жазусыз); қайта форматтау керек болса, сәтсіз болады.
prettier_writeprettier үшін балама атау.
testPrettier (жазу), ESLint, содан кейін Vitest (қамту бапталса).
test_i18nТек i18n тесттері: қондырма placeholder-лары/паритеті + веб‑сайт паритеті.
translate_apptranslation_app үшін балама атау.
translation_appҚосымша UI жолдарын sources/_locales/en/messages.json бастап аудару.
translate_web_docs_batchВеб‑сайт құжаттарын OpenAI Batch API арқылы аудару (ұсынылады).
translate_web_docs_syncВеб‑сайт құжаттарын синхронды аудару (мұрагер, batch емес).
translate_web_indextranslation_web_index үшін балама атау.
translation_web_indexБасты бет/навигация/түсініктеме (footer) UI-ын аудару (website/i18n/en/code.json → .../<lang>/code.json).
web_buildҚұжаттарды website/build орнына құрастыру (--locales / BUILD_LOCALES қолдайды).
web_build_linkcheckОфлайн‑қауіпсіз сілтемелерді тексеру (қашықтағы HTTP[S] өткізеді).
web_build_local_previewЖергілікті gh‑pages превью; 8080–8090 порттарында авто-сервер; қосымша тесттер/сілтеме тексерісі.
web_push_githubwebsite/build элементін gh-pages тармағына итеру (push).

Опциялар синтаксисі

  • Опцияларды беру үшін make <command> OPTS="…" пайдаланыңыз (тырнақша ұсынылады). Төмендегі әр мақсатта қолдану үлгілері көрсетілген.

--

Локаль құрастыру кеңестері

  • Локальдардың ішкі жиынын құрастыру: BUILD_LOCALES="en de" орнатыңыз немесе веб мақсаттарына OPTS="--locales en,de" беріңіз.
  • Нақты локальді алдын ала қарау: http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.

Құрастыру және орау

  • ZIP-терді құрастыру: make pack
  • Репозиторий түбінде ATN және LOCAL ZIP-терін жасайды (артефакттарды қолмен өңдемеңіз)
  • Кеңес: ораудан бұрын нұсқаны sources/manifest_ATN.json және sources/manifest_LOCAL.json екеуінде де жаңартыңыз
  • Қолмен орнату (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → жасалған ZIP файлын таңдаңыз

Тестілеу

  • Толық жиын: make test (Vitest)
  • Қамту (қосымша):
  • npm i -D @vitest/coverage-v8
  • make test іске қосыңыз; HTML есебі үшін coverage/index.html ашыңыз
  • Тек i18n: make test_i18n (UI кілттері/placeholder-лар/атаулар + веб‑сайтта әр локаль бойынша әр құжаттың паритеті id/title/sidebar_label тексерістерімен)

Жөндеу және журналдар

  • Қате консолі: Tools → Developer Tools → Error Console
  • Жіктелген (verbose) журналдарды орындалу кезінде қосу/өшіру:
  • Қосу: messenger.storage.local.set({ debug: true })
  • Өшіру: messenger.storage.local.set({ debug: false })
  • Жауаптарды жазу/жіберу кезінде журналдар көрінеді

Құжаттар (веб‑сайт)

  • Dev сервері: cd website && npm run start
  • Статикалық сайтты құрастыру: cd website && npm run build
  • Make баламалары (алфавитпен): make web_build, make web_build_linkcheck, make web_build_local_preview, make web_push_github
  • Қолдану үлгілері:
  • Тек EN, тесттер/сілтеме тексерісін өткізу, push жоқ: make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run"
  • Барлық локальдар, тесттер/сілтеме тексерісімен, содан кейін push: make web_build_local_preview && make web_push_github
  • Жариялар алдында офлайн‑қауіпсіз сілтеме тексерісін іске қосыңыз: make web_build_linkcheck.
  • i18n: Ағылшын нұсқасы website/docs/*.md ішінде; неміс аудармалары website/i18n/de/docusaurus-plugin-content-docs/current/*.md ішінде
  • Іздеу: Егер Algolia DocSearch орта айнымалылары CI-де орнатылса (DOCSEARCH_APP_ID, DOCSEARCH_API_KEY, DOCSEARCH_INDEX_NAME), сайт Algolia іздеуді қолданады; әйтпесе жергілікті іздеуге ауысады. Басты бетте іздеу жолағын ашу үшін / немесе Ctrl+K басыңыз.

  • website/src/pages/donate.js
  • Маршрут: /donate (және /<locale>/donate)
  • Мінез-құлық:
  • Ағымдағы маршрутта локаль болса (мыс., /de/donate), соны пайдаланыңыз
  • Болмаса, navigator.languages ішінен бапталған локальдерге ең жақынын таңдаңыз; әдепкі локальге қайтыңыз
  • Қайта бағыттайды:
  • en/docs/donation
  • басқалары → /<locale>/docs/donation
  • baseUrl-ды дұрыс өңдеу үшін useBaseUrl қолданады
  • Қосымша ретінде meta refresh + noscript сілтемесін қамтиды


Превью кеңестері

  • Node превьюін дұрыс тоқтату: http://localhost:<port>/__stop ашыңыз (Local server started кейін басылып шығады).
  • MDX/JSX ішінде суреттер жүктелмесе, сайттың baseUrl параметрін сақтау үшін useBaseUrl('/img/...') қолданыңыз.
  • Алдымен превью басталады; содан кейін сілтеме тексерісі іске қосылады және бөгемейді (сынған сыртқы сілтемелер превьюді тоқтатпайды).
  • Превью URL үлгісі: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (“Local server started” шыққаннан кейін басылады).
  • Сілтеме тексерістегі сыртқы сілтемелер: Кейбір сыртқы сайттар (мыс., addons.thunderbird.net) автоматтандырылған тексергіштерді бөгеп, 403 көрсетуі мүмкін. Превью бәрібір басталады; мұны елемеуге болады.

Веб‑сайтты аудару

Не аудара аласыз

  • Тек веб‑сайт UI: басты бет, навбар, футер және өзге UI жолдары. Құжаттар мазмұны әзірге тек ағылшынша қалады.

Қай жерде өңдеу керек

  • website/i18n/<locale>/code.json өңдеңіз (en үлгі ретінде). {year}, {slash}, {ctrl}, {k}, {code1} сияқты placeholder-ларды өзгертпеңіз.

Файлдарды жасау немесе жаңарту

  • Барлық локальдер үшін жетіспейтін қалқаларды (stubs) жасау: npm --prefix website run i18n:stubs
  • Жаңа жолдар қосылғаннан кейін ағылшыннан stubs үстінен жазу: npm --prefix website run i18n:stubs:force
  • Жеке локаль үшін балама: npx --prefix website docusaurus write-translations --locale <locale>

Басты бет/навигация/футер UI жолдарын аудару (OpenAI)

  • Деректерді бір рет орнатыңыз (shell немесе .env):
  • export OPENAI_API_KEY=sk-...
  • Қосымша: export OPENAI_MODEL=gpt-4o-mini
  • Бір реттік (барлық локальдер, en тыс): make translate_web_index
  • Нақты локальдермен шектеу: make translate_web_index OPTS="--locales de,fr"
  • Бар мәндердің үстінен жазу: make translate_web_index OPTS="--force"

Тексеру және қайта әрекеттер

  • Аударма скрипті JSON пішінін тексереді, ирек жақшадағы placeholder-ларды сақтайды және URL‑дер өзгермегенін қамтамасыз етеді.
  • Тексеру сәтсіз болса, бар мәндерді қалдырмас бұрын 2 ретке дейін кері байланыспен қайта әрекет жасайды.

Локальді алдын ала қараңыз

  • Dev сервері: npm --prefix website run start
  • http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/ сілтемесіне өтіңіз

Жіберу

  • Өңделген code.json файл(дар)ымен PR ашыңыз. Өзгерістерді ықшам ұстаңыз және мүмкін болса, қысқа скриншот қосыңыз.

Қауіпсіздік және баптау кеңестері

  • sources/manifest.json файлын commit жасамаңыз (құрастыру уақытша жасайды)
  • Жаңарту арнасын сақтау үшін browser_specific_settings.gecko.id мәнін тұрақты ұстаңыз

Баптаулардың тұрақтылығы

  • Сақтау: Пайдаланушы баптауларының бәрі storage.local ішінде сақталады және қондырма жаңартуларында да сақталады.
  • Орнату: Әдепкілер тек кілт мүлдем жоқ болғанда (undefined) ғана қолданылады.
  • Жаңарту: Миграция тек жетіспейтін кілттерді толтырады; бар мәндер ешқашан үстінен жазылмайды.
  • Схема маркері: settingsVersion (қазір 1).
  • Кілттер және әдепкілер:
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • Код: sources/background.jsinitializeOrMigrateSettings() және SCHEMA_VERSION қараңыз.

Әзірлеу ағыны (жаңа баптау қосу)

  • sources/background.js ішінде SCHEMA_VERSION арттырыңыз.
  • Жаңа кілт + әдепкіні initializeOrMigrateSettings() ішіндегі DEFAULTS объектісіне қосыңыз.
  • Әдепкілерді толтырғанда «тек-егер-анықталмаған» ережесін қолданыңыз; бар мәндерді үстінен жазбаңыз.
  • Егер баптау пайдаланушыға көрінетін болса, оны sources/options.js ішінде байланыстырып, локализацияланған жолдар қосыңыз.
  • Тесттерді қосыңыз/реттеңіз (tests/background.settings.migration.test.js қараңыз).

Қолмен тестілеу кеңестері

  • Таза орнатуды модельдеу: кеңейтімнің деректер бумасын тазалаңыз немесе жаңа профильмен бастаңыз.
  • Жаңартуды модельдеу: storage.local ішінде settingsVersion мәнін 0 етіп қойып, қайта жүктеңіз; бар мәндер өзгермегенін және тек жетіспейтін кілттер қосылғанын растаңыз.

Ақауларды жою

  • Thunderbird 128 ESR немесе жаңарақ екеніне көз жеткізіңіз
  • Орындалу мәселелері үшін Error Console қолданыңыз
  • Сақталған баптаулар дұрыс қолданылмайтын болса, Thunderbird-ті қайта іске қосып көріңіз. (Thunderbird сессиялар арасында күйді кэштеуі мүмкін; қайта іске қосу жаңа баптауларды жүктеуді қамтамасыз етеді.)

CI және қамту

  • GitHub Actions (CI — Tests) vitest-ті қамту шектерімен іске қосады (85% жолдар/функциялар/тармақтар/операторлар). Егер шектер орындалмаса, жұмыс сәтсіз аяқталады.
  • Жұмыс үрдісі HTML есебі бар coverage-html артефактын жүктейді; оны жүгіру бетінде жүктеңіз (Actions → соңғы жүгіру → Artifacts).

Үлес қосу

  • Бөлім/commit/PR нұсқаулары үшін CONTRIBUTING.md қараңыз
  • Кеңес: күнделікті профиліңізге әсер етпеу үшін тестілеуге бөлек Thunderbird әзірлеу профилін жасаңыз.

Аудармалар

  • Үлкен “all → all” аударма тапсырмалары баяу әрі қымбат болуы мүмкін. Алдымен ішкі жиыннан бастаңыз (мыс., бірнеше құжат және 1–2 локаль), нәтижені қарап шығып, кейін кеңейтіңіз.

  • Қайта әрекет саясаты: аударма тапсырмалары API қателерінде экспоненциалды кідірістермен 3 ретке дейін қайта әрекет жасайды; scripts/translate_web_docs_batch.js және scripts/translate_web_docs_sync.js қараңыз.

Құжаттар үшін скриншоттар

  • Суреттерді website/static/img/ ішінде сақтаңыз.

  • MD/MDX ішінде useBaseUrl('/img/<filename>') арқылы сілтеме жасаңыз, осылайша жолдар сайттың baseUrl параметрімен үйлеседі.

  • website/static/img/ ішінде суреттерді қосқаннан немесе қайта атағаннан кейін, барлық сілтемелер әлі де useBaseUrl('/img/…') пайдаланатынын және жергілікті превьюде көрсетілетінін растаңыз. Фавикондар

  • Көп мөлшерлі favicon.ico барлық құрастыру жолдарында (Make + скрипттер) website/scripts/build-favicon.mjs арқылы автоматты түрде жасалады.

  • Қолмен әрекеттер қажет емес; icon-*.png жаңарту жеткілікті. Шолу кеңесі

  • Аударылған құжаттарда front‑matter ішіндегі id өзгертпей сақтаңыз; тек title және sidebar_label мәндерін аударыңыз (бар болса).

clean

  • Мақсаты: жергілікті құрастыру/превью артефакттарын жою.
  • Қолданылуы: make clean
  • Жояды (болса):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • Мақсаты: форматтау, тестілеу, өзгерістер журналын жаңарту, commit және push.
  • Қолданылуы: make commit
  • Егжей‑тегжейі: Prettier (жазу), make test, make test_i18n іске қосады; stage жасалған айырмашылықтар болса, changelog-қа қосады; origin/<branch> тармағына push жасайды.

eslint

  • Мақсаты: ESLint-ті flat конфиг арқылы іске қосу.
  • Қолданылуы: make eslint

help

  • Мақсаты: барлық мақсаттарды бір жолдық сипаттамамен тізімдеу.
  • Қолданылуы: make help

lint

  • Мақсаты: web-ext пайдаланып MailExtension-ды lint ету.
  • Қолданылуы: make lint
  • Ескертпелер: sources/manifest_LOCAL.jsonsources/manifest.json уақытша көшірмелейді; құрастырылған ZIP-терді елемейді; ескертулер pipeline-ды құлатпайды.

menu

  • Мақсаты: Make мақсатын және қосымша аргументтерді таңдауға арналған интерактивті мәзір.
  • Қолданылуы: make аргументсіз іске қосыңыз.
  • Ескертпе: whiptail қолжетімсіз болса, мәзір make help нұсқасына қайтады.

pack

  • Мақсаты: ATN және LOCAL ZIP-терін құрастыру (lint тәуелді).
  • Қолданылуы: make pack
  • Кеңес: ораудан бұрын sources/manifest_*.json екеуінде де нұсқаларды арттырыңыз.

prettier

  • Мақсаты: репоны орнында форматтау.
  • Қолданылуы: make prettier

prettier_check

  • Мақсаты: форматтауды тексеру (жазусыз).
  • Қолданылуы: make prettier_check

prettier_write

  • Мақсаты: prettier үшін балама.
  • Қолданылуы: make prettier_write

test

  • Мақсаты: Prettier (жазу), ESLint, содан кейін Vitest (қамту орнатылса).
  • Қолданылуы: make test

test_i18n

  • Мақсаты: қондырма жолдары мен веб‑сайт құжаттарына арналған i18n‑бағдарланған тесттер.
  • Қолданылуы: make test_i18n
  • Іске қосады: npm run test:i18n және npm run -s test:website-i18n.

translate_app / translation_app

  • Мақсаты: қондырма UI жолдарын EN-нен өзге локальдерге аудару.
  • Қолданылуы: make translation_app OPTS="--locales all|de,fr"
  • Ескертпелер: кілт құрылымын және placeholder-ларды сақтайды; translation_app.log ішіне журналдайды. Скрипт түрі: node scripts/translate_app.js --locales ….

translate_web_docs_batch / translate_web_docs_sync

  • Мақсаты: веб‑сайт құжаттарын website/docs/*.md бастап website/i18n/<locale>/... тіліне аудару.
  • Ұсынылатын: translate_web_docs_batch (OpenAI Batch API)
    • Қолданылуы (жалаушалар): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Мұрагер позициялық түрі әлі қолданылады: OPTS="<doc|all> <lang|all>"
  • Мінез‑құлық: JSONL құрады, жүктейді, әр 30с сайын сұрайды, нәтижелерді жүктеп алып, файлдарға жазады.
  • Ескерту: batch тапсырма аяқталуға 24 сағатқа дейін созылуы мүмкін (OpenAI batch терезесіне сай). Консоль әр сұрауда өткен уақытты көрсетеді.
  • Орта: OPENAI_API_KEY (қажетті), опционалды OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (әдепкі 24 сағ), BATCH_POLL_INTERVAL_MS.
  • Мұрагер: translate_web_docs_sync
    • Қолданылуы (жалаушалар): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Мұрагер позициялық түрі әлі қолданылады: OPTS="<doc|all> <lang|all>"
  • Мінез‑құлық: әр жұпқа синхронды сұраулар (batch агрегациясыз).
  • Ескертпелер: OPTS жіберілсе, интерактивті сұраулар көрсетіледі. Екі режим де код блоктары/inline кодты сақтайды және front‑matter ішіндегі id өзгеріссіз қалады; журналдар translation_web_batch.log (batch) немесе translation_web_sync.log (sync) ішіне жазылады.

translate_web_index / translation_web_index

  • Мақсаты: веб‑сайт UI жолдарын (website/i18n/en/code.json бастап) website/i18n/<locale>/code.json астындағы барлық локальдерге аудару (en қоспағанда).
  • Қолданылуы: make translate_web_index немесе make translate_web_index OPTS="--locales de,fr [--force]"
  • Талаптар: OPENAI_API_KEY экспорттау (қосымша: OPENAI_MODEL=gpt-4o-mini).
  • Мінез‑құлық: JSON құрылымын тексереді, ирек жақшадағы placeholder-ларды сақтайды, URL‑дерді өзгертпейді және тексеру қателерінде кері байланыспен қайта әрекет жасайды.

web_build

  • Мақсаты: құжаттар сайтын website/build орнына құрастыру.
  • Қолданылуы: make web_build OPTS="--locales en|de,en|all" (немесе BUILD_LOCALES="en de" орнатыңыз)
  • Ішкісі: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Тәуелділіктер: website/node_modules/@docusaurus жоқ болса ғана website/ ішінде npm ci іске қосады.

web_build_linkcheck

  • Мақсаты: офлайн‑қауіпсіз сілтеме тексерісі.
  • Қолданылуы: make web_build_linkcheck OPTS="--locales en|all"
  • Ескертпелер: tmp_linkcheck_web_pages ішіне құрастырады; GH Pages baseUrl мәнін / етіп қайта жазады; қашықтағы HTTP(S) сілтемелерін өткізеді.

web_build_local_preview

  • Мақсаты: қосымша тесттер/сілтеме тексерісімен жергілікті gh‑pages превью.
  • Қолданылуы: make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]"
  • Мінез‑құлық: алдымен Node превью серверін байқап көреді (scripts/preview-server.mjs, /__stop қолдайды), python3 -m http.server нұсқасына ауысады; 8080–8090 порттарында қызмет етеді; PID web-local-preview/.server.pid ішінде.

web_push_github

  • Мақсаты: website/build элементін gh-pages тармағына push жасау.
  • Қолданылуы: make web_push_github

Кеңес: Makefile қолданатын пакет менеджерін алмастыру үшін NPM=… орнатыңыз (әдепкіде npm).