Skip to main content

Dɛvɛlopimɛ


Gidiki dɛnɛkɛla

Ka sɛbɛnɛlen English kelen de; tarikɛli bɛ ta fɛ

Ka dɔkumenti minnu bɛ yen bɛɛ sɛbɛn kɔnɔ website/docs (English) dɔ. Tarikɛliw minnu bɛ yen website/i18n/<locale>/… kɔfɛ bɛ ɲɛgɛnna, o kɔfɛ ma na ka kɛ sɛbɛnna dɔni dɔ. Ka tarikɛli min (misali, make translate_web_docs_batch) ka na ka bɛɛ sɛbɛnna kɛnɛ ye.

Kɔfɛw (Prerequisites)

  • Node.js 22+ ni npm (a tɛstɛ ka done Node 22 kɔfɛ)
  • Thunderbird 128 ESR walima kɔrɔsen dɔ (manu sɛgɛsɛgɛ tɛstila walasa)

Projekiti lajɔ (high‑level)

  • Root: pakajiŋ scripiti distribution_zip_packer.sh, dɔkumentiw, sikanjɛw
  • sources/: add‑on bɛɛ bɔ (background, options/popup UI, manifests, icons)
  • tests/: Vitest sɛgɛsɛgɛw
  • website/: Docusaurus dɔkumentiw (i18n bɛ yen website/i18n/de/... kɔfɛ)

Sɛbɛnni ni Jalakɛlaw

  • Sɛbɛn root dependencies: npm ci
  • Dɔkumentiw (tɔɔrɔ bɛɛ min ye): cd website && npm ci
  • Ka targetw sɔrɔ: make help

Live dɛnɛkɛla (web‑ext run)

  • Siraba kɔrɔ kɔrɔ Firefox Desktop la (UI smoke‑tests kelen de):
  • npx web-ext run --source-dir sources --target=firefox-desktop
  • Ka kalan Thunderbird la (MailExtensions na ye ka da la):
  • npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"
  • Dɛmɛcogo:
  • Ka Thunderbird Error Console bɔ minɛn (Tools → Developer Tools → Error Console).
  • MV3 event pages bɛ na kɔrɔ kɔrɔ sɔn ka taa sisan sisan; ka add‑on yɔrɔ kɔlɔsili a bɛɛ lajɛ ka code bɛ yenna ko dɔ, walima bɔ web‑ext ka a ye auto‑reload kɛ.
  • Firefox kelen de ka hakɛw dɔ bɛ kɛ dɔrɔn ye; ka a fɛɛrɛ kelen kelen Thunderbird la walasa API ye bɛnni kɛ.
  • Thunderbird binary pathw (misaliw):
  • Linux: thunderbird (misali, /usr/bin/thunderbird)
  • macOS: /Applications/Thunderbird.app/Contents/MacOS/thunderbird
  • Windows: "C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
  • Profile jɛlajɛli: Ka Thunderbird profile dɔ bɛɛ yera dɛnɛkɛla walasa a ma i ɲɔgɔn dɔ ka tɛ i sariya kelen kan.

Make Targetw (a ka sugu fɛ)

Makefile bɛ ka dɛnɛkɛla baaraw caman ɲɛtaa kɛlen ma. Ka make help kalan waati bɛɛ walasa ka target bɛɛ jɛkaba dɔ fɔlɔ min na.

Dɛmɛcogo: make ka kalan bila target fɔ ko tɛ bɛ bɔ Whiptail menu dɔ ɲɛrɛrɛ walasa ka target dɔ minɛn.

TargetJɛkaba dɔ fɔlɔ
cleanKa buildu/preview local artefactiw jiri (tmp/, web-local-preview/, website/build/).
commitKa format kɛ, ka tɛstiw kɛ (i18n dɔrɔn kɔnɔ), ka changelog yen, ka commit kɛ & push kɛ.
eslintKa ESLint kɛ flat config kɔnɔ (npm run -s lint:eslint).
helpKa targetw bɛɛ lajɛ kɔfɛ jɛkaba dɔ fɔlɔ (a ka sugu fɛ).
lintweb‑ext lint sources/ kan (manifest tɛmɛna; ZIPw yamaruya; ka a ma yɔrɔ bɔ fɛ).
menuMenu ɲɛrɛrɛ walasa ka target dɔ fila ka filennen ni arguumenti minnu ye.
packKa ATN & LOCAL ZIPw sɔrɔ (linter bɛ na; packer script bɛ na).
prettierKa repository format kɛ kɔnɔ (ka yɔrɔw bɔ).
prettier_checkPrettier check mode la (ka yɔrɔw ma bɔ); bɛ ban ka a taara ni format bɛ se ka yɛlɛma.
prettier_writeAlias prettier ma.
testPrettier (write), ESLint, o kɔfɛ Vitest (coverage ni a sɔrɔ).
test_i18ni18n dɔrɔn tɛstiw: add‑on placeholders/parity + website parity.
translate_appAlias translation_app ma.
translation_appKa app UI sɔrɔbaw tarikɛli sources/_locales/en/messages.json kɔfɛ.
translate_web_docs_batchKa website dɔkumentiw tarikɛli OpenAI Batch API la (na ye ka da).
translate_web_docs_syncKa website dɔkumentiw tarikɛli kelen kelen (kɔrɔ, batch tɛ).
translate_web_indexAlias translation_web_index ma.
translation_web_indexKa homepage/navbar/footer UI tarikɛli (website/i18n/en/code.json → .../<lang>/code.json).
web_buildKa dɔkumentiw build kɛ website/build kɔfɛ (bɛ na --locales / BUILD_LOCALES dɛmɛ).
web_build_linkcheckLink check offline‑safe (HTTP[S] dyɛlila minnu tɛ sɔrɔ).
web_build_local_previewLocal gh‑pages preview; auto‑serve 8080–8090 kan; tɛsti/link‑check tɔɔrɔ ye.
web_push_githubKa website/build push kɛ gh-pages branch kɔfɛ.

Options la sigicogo

  • make <command> OPTS="…" bɛ ka options fɔ (quotes bɛ se ka bɛɛ). Targetw minnu bɛ kɔnɔ bɛ bɔ misali jate.

--

Locale build dɛmɛcogo

  • Ka locale dɔw dɔ build dɔ: ka BUILD_LOCALES="en de" sɛbɛn walima ka OPTS="--locales en,de" fara web targetw kan.
  • Locale dɔ min dɔ ka lajɛ: http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.

Build & Pakajiŋ

  • ZIPw build: make pack
  • ATN ni LOCAL ZIPw bɛ bɛɛ na repo root kɔnɔ (i ma na artisɛtiw ɲɛnabɔ kɛ ka sɛbɛnna dɔ)
  • Dɛmɛcogo: ka version yelema sources/manifest_ATN.json ni sources/manifest_LOCAL.json kɔnɔ kɔfɛ sisan ka pakajiŋ kɛra.
  • Sɛbɛn manu (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → ka ZIP sɔrɔbaw lajɛ min bɛ build kɔnɔ

Tɛsti

  • Suite bɛɛ: make test (Vitest)
  • Coverage (tɔɔrɔ ye):
  • npm i -D @vitest/coverage-v8
  • make test ka kalan; coverage/index.html bɔ walasa HTML rapɔri na
  • i18n dɔrɔn: make test_i18n (UI keyw/placeholders/titles + website per‑locale per‑doc parity ni id/title/sidebar_label checkw)

Debugging ni Logw

  • Error Console: Tools → Developer Tools → Error Console
  • Ka logw jɔ yɔrɔcogo bɔ waati la:
  • Ka kunnafoni: messenger.storage.local.set({ debug: true })
  • Ka ka ladilan: messenger.storage.local.set({ debug: false })
  • Logw bɛ bɔ waati min na i bɛ de kɛ ka ɲɛsin ni ka a labɔ

Dɔkumentiw (website)

  • Dev server: cd website && npm run start
  • Ka site stati kɛ: cd website && npm run build
  • Make ka nyininw (a ka sugu fɛ): make web_build, make web_build_linkcheck, make web_build_local_preview, make web_push_github
  • Jate misaliw:
  • EN dɔ kelen de, ka tɛsti/link‑check ka taa, push tɛ: make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run"
  • Locale bɛɛ, ka tɛsti/link‑check kɛ, o kɔfɛ ka push: make web_build_local_preview && make web_push_github
  • Ka bɔra kɔfɛ ko bɛɛ na, ka link check offline‑safe kɛ: make web_build_linkcheck.
  • i18n: English bɛ yen website/docs/*.md kɔfɛ; Alemaŋ kan tarikɛliw bɛ yen website/i18n/de/docusaurus-plugin-content-docs/current/*.md
  • Sɛrci: Ni Algolia DocSearch env variables bɛ CI kɔnɔ (DOCSEARCH_APP_ID, DOCSEARCH_API_KEY, DOCSEARCH_INDEX_NAME), site bɛ Algolia search ka bali; o tɛ, a bɛ segin local search la. Homepage kan, / walima Ctrl+K na ka search box bɔ.

  • website/src/pages/donate.js
  • Route: /donate (ni /<locale>/donate)
  • Ka kɛra la:
  • Ni route min ka sisan bɛ locale dɔ na (misali, /de/donate), a bɛ a ye.
  • O tɛ, ka ka ɲɛsin wɛrɛw navigator.languages ni localew sɛbɛnna la; ni o tɛ sɔrɔ, ka segin default locale ma.
  • Bɛ ɲɔgɔn ye:
  • en/docs/donation
  • wɛrɛw → /<locale>/docs/donation
  • useBaseUrl bɛ na walasa baseUrl ka kɛ kɛnɛ ye
  • Meta refresh bɛ kɔnɔ + noscript link bɛ yen sɛgɛsɛgɛ ma


Preview dɛmɛcogo

  • Ka Node preview da kɛ kɛnɛ ye: ka http://localhost:<port>/__stop bɔ (a bɛ printi waati min na Local server started).
  • Ni sikanjɛw tɛ bɔ MDX/JSX kɔnɔ, ka useBaseUrl('/img/...') bɔ walasa site baseUrl ka sɔn.
  • Preview bɛ bɔ fɔlɔ; link check bɛ kɔfɛ bɔ kɔrɔ kɔrɔ ni o tɛ bɔ kɔfɛ (external linkw minnu bɛ tiɲɛ ɲɛ kɛra tɛ bɛ ɲininna preview ma).
  • Preview URL misali: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (a bɛ printi waati min na “Local server started”).
  • External linkw link‑check kɔnɔ: Sitew dɔw (misali, addons.thunderbird.net) bɛ ka bɛ kelenw sɔrɔbaliw farafinw dafa, o tun bɛ 403 lajɛ link check kɔnɔ. Preview bɛ bɔ kɔnɔ; i bɛ se ka o ɲɛfɔ kɔrɔw ɲininka.

Ka Website tarikɛli

Fɛnw minnu i bɛ se ka tarikɛli

  • Website UI dɔ kelen de: homepage, navbar, footer, ni UI sɔrɔbaw wɛrɛw. Dɔkumenti ɲɛfɔw bɛna sɛbɛn English kelen de sisan.

Fɛ min na ka sɛbɛn

  • website/i18n/<locale>/code.json sɛbɛn (ka en dɔ ye na referensi ye). Ka placeholders minnu bɛ fɛ ka kɛ ni {year}, {slash}, {ctrl}, {k}, {code1} i ma ɲɛnabɔ kɛ.

Ka fɛnw sɔrɔ walima ka kura kɛ

  • Ka stubs minnu bɛ sɔrɔ bɛɛ sɔrɔ locale bɛɛ ma: npm --prefix website run i18n:stubs
  • Ka stubs tɛma English kɔfɛ (sisan ni i tɛmɛna kalimen kura): npm --prefix website run i18n:stubs:force
  • Alaŋɛrɛnika locale dɔ kelen de: npx --prefix website docusaurus write-translations --locale <locale>

Ka homepage/navbar/footer UI sɔrɔbaw tarikɛli (OpenAI)

  • Ka credentials sɛbɛn kelen de (shell walima .env):
  • export OPENAI_API_KEY=sk-...
  • Tɔɔrɔ ye: export OPENAI_MODEL=gpt-4o-mini
  • One‑shot (locale bɛɛ, en tɛ bɛ bɔ): make translate_web_index
  • Ka ɲɔgɔn ɲɛmɔgɔ dɔ la: make translate_web_index OPTS="--locales de,fr"
  • Ka kɛ ka ka minnu bɛ yen yɔrɔw ɲɛlɛma: make translate_web_index OPTS="--force"

Valideyisɔni ni seginniw

  • Tarikɛli script bɛ JSON shape validera, ka curly‑brace placeholders ɲini, ni ka URLw ma yelema.
  • Valideyisɔni bɔra la, a bɛ segin 2 waati ɲɛmɔgɔ ni ɲɛfɔ kɔfɛ kɔ before ka minnu bɛ yen yɔrɔw daminɛ.

I ka locale lajɛ

  • Dev server: npm --prefix website run start
  • Ka taa http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/

Submitting

  • Ka PR dɔ bɔ ni code.json faili(w) minnu i tɛmɛna. Ka yelemaw bɔ dɔgɔya, ka sikanjɛ ɲɛ na waati min bɛ se.

Securite ni Kɔnfigurasi dɛmɛcogo

  • Ka sources/manifest.json ma commit kɛ (build bɛna a sɛbɛn waati dɔ kelen).
  • Ka browser_specific_settings.gecko.id kɛ kelen kelen walasa update channel ka ɲɛfa.

Settings jirali

  • Storage: Baraw bɛɛ minnu sɛbɛnna bɛ yen storage.local kɔnɔ, o bɛ taa add‑on updatew ɲa la.
  • Install: Defaults bɛna kɛ waati min na key dɔ ɲɛsin fila (undefined).
  • Update: Migration bɛ keyw minnu ɲɛsin dɔ fɔlɔ daminɛ kelen de; valuyɛw min bɛ yen tɛna yelema la.
  • Schema marker: settingsVersion (sisan 1).
  • Keyw ni defaultw:
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • Code: ɲininka sources/background.jsinitializeOrMigrateSettings() ni SCHEMA_VERSION.

Dɛnɛkɛla baarakɛcogo (setting kura fara)

  • Ka SCHEMA_VERSIONsources/background.js kɔnɔ.
  • Ka key kura + default ɲɛna DEFAULTS object kɔnɔ initializeOrMigrateSettings() la.
  • Ka "only-if-undefined" sariyala bɔ waati min na defaultw bɛna ɲɛ; i ma na valuw min bɛ yen yɔrɔw ɲɛlɛma.
  • Ni setting min na ka ɲɛsin ɲɛ na barakekelen kan, ka a ɲɛna sources/options.js kɔnɔ ni ka kalimew lokalize kɛ.
  • Ka tɛstiw fara/tɛmɛ (ɲininka tests/background.settings.migration.test.js).

Manu tɛstila dɛmɛcogo

  • Ka install kura ɲinin: ka extension data dir ka dɔn, walima ka profile kura ɲɛ.
  • Ka update ɲinin: ka settingsVersion sɛbɛn 0 ma storage.local kɔnɔ o kɔfɛ ka re‑load; ka ɲini ka valuyɛw minnu bɛ yen ma yelema, keyw minnu ɲɛsin dɔ kelen de bɛna dɔ bɔ.

Kɛnɛya sɔrɔyacogo

  • Ka kɛ kɛlen Thunderbird 128 ESR walima kɔrɔsen dɔ ye
  • Error Console bɛ sɛgɛsɛgɛ baara waati la
  • Ni settings minnu sɛbɛnna bɛ ɲininka ladilan, ka Thunderbird segin lajɛ ka segin na. (Thunderbird bɛ se ka ɲɔgɔn ɲɛ dɔ min na; ka segin lajɛ bɛ ma settings kura bɔ kɛnɛ ye.)

CI ni Coverage

  • GitHub Actions (CI — Tests) bɛ vitest kɛ ni coverage thresholdw (85% lines/functions/branches/statements). Ni thresholdw tɛ na, ka baara bɔ.
  • Workflow bɛ artefact dɔ ɲɛ coverage-html ni HTML rapɔri la; ka a downloadi ka bɔ run paji kɔnɔ (Actions → run kɔfɛ kɔrɔ → Artifacts).

Ka dɛmɛ (Contributing)

  • Ka lajɛ CONTRIBUTING.md la branch/commit/PR sariyaw kɔfɛ
  • Dɛmɛcogo: Ka Thunderbird development profile dɔ kelen kɛ tɛstila walasa a ma i ka profile sariya kelen kan ta.

Tarikɛliw

  • “all → all” tarikɛli baara kalanw bɛ kɔrɔbɔ ka sɔrɔ ni jamanadenw bɛɛ kɛ. Ka segin dɔgɔya (misali, dɔkumentiw dɔw ni locale 1–2), ka ɲɛsin a ka ɲɔgɔn, o kɔfɛ ka sɛbɛnni bɔ yen.

  • Seginni sari: tarikɛli baaraw bɛ kɛ seginni 3 waati kɔfɛ ni API errorw bɛ na ni backoff (exponential); ɲininka scripts/translate_web_docs_batch.js ni scripts/translate_web_docs_sync.js.

Sikanjɛw walasa dɔkumentiw

  • Ka sikanjɛw ji website/static/img/ kɔnɔ.

  • Ka a fɔ MD/MDX kɔnɔ ni useBaseUrl('/img/<filename>') walasa pathw bɛ na ka taa site baseUrl kan.

  • Sisan ni i tɛmɛna walima sɔrɔbali la sikanjɛw website/static/img/ kɔnɔ, ka ɲini ka referensi bɛɛ bɛ se ka useBaseUrl('/img/…') fɛ ni ka render kɛ local preview kɔnɔ. Favicons

  • favicon.ico multi‑size bɛna ɲɛgɛnna automatique build path bɛɛ kɔnɔ (Make + scripitiw) website/scripts/build-favicon.mjs la.

  • Sariya manu tɛ ɲɛ; icon-*.png yelema de bɛ na.

    Dɛmɛcogo walasa lajɛ

  • Ka front‑matter id ma yelema dɔkumenti tarikɛli kɔnɔ; ka title ni sidebar_label dɔ de tarikɛli waati min bɛ yen.

clean

  • Jatigi: ka buildu/preview artisɛtiw minnu bɛ yen yere la sini.
  • Jate: make clean
  • Bɛ jiri (ni a bɛ yen):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • Jatigi: ka format kɛ, ka tɛsti kɛ, ka changelog yen, ka commit kɛ, ka push kɛ.
  • Jate: make commit
  • Dɛɲɔw: Prettier (write), make test, make test_i18n bɛ na; ka changelog ɲɛ fɔ waati min na staged diffs bɛ yen; ka push kɛ origin/<branch> ma.

eslint

  • Jatigi: ka ESLint kɛ flat config kɔnɔ.
  • Jate: make eslint

help

  • Jatigi: ka targetw bɛɛ lajɛ ni jɛkaba dɔ fɔlɔ.
  • Jate: make help

lint

  • Jatigi: ka MailExtension lint kɛ web-ext bɔ.
  • Jate: make lint
  • Notew: ka sources/manifest_LOCAL.json tɛmɛna → sources/manifest.json; ZIPw minnu sɔrɔra bɛna kɛ yamaruya; warningw tɛ bɔ pipeline ma.

menu

  • Jatigi: menu ɲɛrɛrɛ walasa ka Make target dɔ filennen ni arguamentiw tɔɔrɔ ye.
  • Jate: ka make kalan bila arguamenti tɛ.
  • Notew: ni whiptail tɛ sɔrɔ, menu bɛ segin make help ma.

pack

  • Jatigi: ka ATN ni LOCAL ZIPw build kɛ (lint kan).
  • Jate: make pack
  • Dɛmɛcogo: ka versionw yelema sources/manifest_*.json kɔfɛ sisan ka pakajiŋ kɛ.

prettier

  • Jatigi: ka repo format kɛ kɔnɔ.
  • Jate: make prettier

prettier_check

  • Jatigi: ka format verify kɛ (ka yɔrɔ ma bɔ).
  • Jate: make prettier_check

prettier_write

  • Jatigi: alias prettier ma.
  • Jate: make prettier_write

test

  • Jatigi: ka Prettier (write), ESLint, o kɔfɛ Vitest (coverage ni a sɔrɔ) kɛ.
  • Jate: make test

test_i18n

  • Jatigi: i18n dɔrɔn tɛstiw add‑on kalimew ni website dɔkumentiw ma.
  • Jate: make test_i18n
  • Bɛ ka: npm run test:i18n ni npm run -s test:website-i18n.

translate_app / translation_app

  • Jatigi: ka add‑on UI kalimew tarikɛli EN kɔfɛ ka a taa locale wɛrɛw ma.
  • Jate: make translation_app OPTS="--locales all|de,fr"
  • Notew: key structure ni placeholders bɛna ɲɛ; logw bɛna translation_app.log ma. Scripiti ɲɛ: node scripts/translate_app.js --locales ….

translate_web_docs_batch / translate_web_docs_sync

  • Jatigi: ka website dɔkumentiw tarikɛli website/docs/*.md kɔfɛ ka taa website/i18n/<locale>/... ma.
  • Nafɔ bɛ se: translate_web_docs_batch (OpenAI Batch API)
    • Jate (flagiw): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Legacy positional tɛna ka ɲɛ: OPTS="<doc|all> <lang|all>"
  • Ka kɛra la: ka JSONL buildi, ka uploadi, ka polli 30s kɔfɛ kɔrɔ kɔrɔ, ka resultw downloadi, ka faili sɛbɛn.
  • Note: batch baara dɔ bɛ se ka taa 24 waati kɔfɛ (OpenAI batch window ma). Console bɛ na waati min bɛ ban kɔrɔ kɔrɔ ni a bɛ polli.
  • Env: OPENAI_API_KEY (dɔrɔn), tɔɔrɔw ye OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (default 24h), BATCH_POLL_INTERVAL_MS.
  • Legacy: translate_web_docs_sync
    • Jate (flagiw): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Legacy positional tɛna ka ɲɛ: OPTS="<doc|all> <lang|all>"
  • Ka kɛra la: requestw kelen kelen per‑pair (batch aggregation tɛ).
  • Notew: Ka promptu ɲɛrɛrɛ bɛ bɔ waati min na OPTS tɛ. Modew bɛɛ bɛ na ka code blockw/inline codew ɲini ni ka front‑matter id ma yelema; logw bɛna translation_web_batch.log (batch) walima translation_web_sync.log (sync) ma.

translate_web_index / translation_web_index

  • Jatigi: ka website UI kalimew tarikɛli (homepage, navbar, footer) website/i18n/en/code.json kɔfɛ ka taa locale bɛɛ ma website/i18n/<locale>/code.json kɔnɔ (en na min tɛ).
  • Jate: make translate_web_index walima make translate_web_index OPTS="--locales de,fr [--force]"
  • Baara kɔfɛw: ka OPENAI_API_KEY exporti (tɔɔrɔ ye: OPENAI_MODEL=gpt-4o-mini).
  • Ka kɛra la: ka JSON structure validate kɛ, ka curly‑brace placeholders ɲini, ka URLw ma yelema, ka segin kɛ ɲɛfɔ kɔfɛ walasa validasɔni errorw ma.

web_build

  • Jatigi: ka dɔkumentiw site build kɛ website/build ma.
  • Jate: make web_build OPTS="--locales en|de,en|all" (walima ka BUILD_LOCALES="en de" sɛbɛn)
  • Kɔnɔko: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Dɛmɛw: npm ci bɛna kɛ website/ kɔnɔ kelen de ni website/node_modules/@docusaurus tɛ sɔrɔ.

web_build_linkcheck

  • Jatigi: link check offline‑safe.
  • Jate: make web_build_linkcheck OPTS="--locales en|all"
  • Notew: build bɛ tmp_linkcheck_web_pages ma; bɛ GH Pages baseUrl sɛbɛn / ma; HTTP(S) linkw dɔrɔn tɛ ɲinina.

web_build_local_preview

  • Jatigi: local gh‑pages preview ni tɛsti/link‑check tɔɔrɔ ye.
  • Jate: make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]"
  • Ka kɛra la: bɛ se ka Node preview server dɔ fɔlɔ (scripts/preview-server.mjs, bɛ na /__stop dɛmɛ), ni o tɛ, bɛ segin python3 -m http.server ma; bɛna serve 8080–8090 kan; PID bɛ web-local-preview/.server.pid kɔnɔ.

web_push_github

  • Jatigi: ka website/build push kɛ gh-pages branch ma.
  • Jate: make web_push_github

Dɛmɛcogo: ka NPM=… sɛbɛn walasa ka package manager min Makefile bɛ na kɛ ɲɛlɛma (default npm).