From 910eba8f85353cd7bb79bb4b67ad3949e6a1ce40 Mon Sep 17 00:00:00 2001 From: heznpc Date: Wed, 10 Jun 2026 06:41:19 +0900 Subject: [PATCH] release: cut v3.5.40 (CWS re-publication artifact) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mechanical version cut so the dashboard upload ships everything merged since the 3.5.39 tag (#166–#194: Italian re-translation + locale guard, protected- terms CJK fix, tutor stream fixes, Gemini-verify guard, FAB icon + reset-button host-CSS fixes, "Claude(Claude)" gloss collapse, chip alignment, shadow-root isolation, doc consistency). - manifest.json / package.json / package-lock.json → 3.5.40 - 11 src/data/*.json _meta.version → 3.5.40 (check:dict-coverage enforces the match); claude-plugin terms data regenerated in sync - CHANGELOG: [Unreleased] → [3.5.40] - 2026-06-10; fresh [Unreleased] added - RELEASE_CHECKLIST refreshed for v3.5.40 (status block, prepared list, gate counts 520/520 + 19 e2e; historical 3.5.39 mentions kept) - STORE_LISTING → v3.5.40; "What's new" gains the 3.5.40 user-facing items (tutor-button icon, chip alignment, "Claude(Claude)" fix, style isolation) - README installation note + version markers (npm run docs) → 3.5.40 Artifacts rebuilt and verified at 3.5.40: store-assets/skillbridge-bundled.zip (CWS upload) + skillbridge.zip (raw fallback) — both gitignored, upload from local disk. Gates: 520 unit, full E2E 19/19, lint, prettier, validate, all check:* green (check:cws-drift intentionally fails until the dashboard upload). --- CHANGELOG.md | 2 ++ README.md | 6 ++-- .../skills/academy-terms/data/index.json | 2 +- .../skills/academy-terms/data/terms.de.json | 2 +- .../skills/academy-terms/data/terms.es.json | 2 +- .../skills/academy-terms/data/terms.fr.json | 2 +- .../skills/academy-terms/data/terms.it.json | 2 +- .../skills/academy-terms/data/terms.ja.json | 2 +- .../skills/academy-terms/data/terms.ko.json | 2 +- .../academy-terms/data/terms.pt-BR.json | 2 +- .../skills/academy-terms/data/terms.ru.json | 2 +- .../skills/academy-terms/data/terms.vi.json | 2 +- .../academy-terms/data/terms.zh-CN.json | 2 +- .../academy-terms/data/terms.zh-TW.json | 2 +- docs/index.html | 4 +-- manifest.json | 2 +- package-lock.json | 4 +-- package.json | 2 +- src/data/de.json | 2 +- src/data/es.json | 2 +- src/data/fr.json | 2 +- src/data/it.json | 2 +- src/data/ja.json | 2 +- src/data/ko.json | 2 +- src/data/pt-BR.json | 2 +- src/data/ru.json | 2 +- src/data/vi.json | 2 +- src/data/zh-CN.json | 2 +- src/data/zh-TW.json | 2 +- store-assets/RELEASE_CHECKLIST.md | 28 +++++++++---------- store-assets/STORE_LISTING.md | 6 ++-- 31 files changed, 52 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a439c7..ba4bf85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [3.5.40] - 2026-06-10 + ### Fixed - **Italian locale was ~51% Spanish.** `src/data/it.json` had been built from `es.json` and only partially re-translated — 632 of its long strings were byte-identical Spanish, and the `_protected` brand map mistranslated `Claude → Claudio`, `Anthropic → Antropico`, `Claude Code → Codice Claudio`, silently breaking runtime brand-term restoration for Italian (our #1 install market). Re-translated every contaminated string from the English source via the same Google Translate endpoint the extension uses, restored brand/technical terms to canonical English, and rebuilt `_protected` with the correct Italian wrong-forms. Italian↔Spanish overlap is now 0.1% (parity with the other 10 locales). (#166, #167) - **Protected-term restoration corrupted correct CJK prose.** Across ko/ja/zh-CN/zh-TW, common words were mapped as brand "wrong-forms" (클라우드→Claude, 인류→Anthropic, 企业→Enterprise, …), so `restoreProtectedTerms` rewrote correct translations into wrong English (e.g. "클라우드 컴퓨팅" → "Claude 컴퓨팅"). Removed the ambiguous common-word wrong-forms; intended brand restoration (클로드→Claude, etc.) still works. (#172) diff --git a/README.md b/README.md index 8f02fba..936b29e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ SkillBridge -# SkillBridge — AI Course Translator v3.5.39 +# SkillBridge — AI Course Translator v3.5.40 > Available in multiple languages at the [project landing page](https://heznpc.github.io/skillBridge/). @@ -145,11 +145,11 @@ Generic translation tools often **mistranslate brand names and technical terms** ## Installation -> **Status: live as v1.0.1; re-publication of the current v3.5.39 pending.** +> **Status: live as v1.0.1; re-publication of the current v3.5.40 pending.** > The Chrome Web Store listing is available in all locales **except the United > States**, where it was removed on 2026-05-12 over a trademark issue with the > old icon (since redesigned on `main`). The published store build is v1.0.1; -> `main` is the up-to-date release (v3.5.39). For the latest version — and for +> `main` is the up-to-date release (v3.5.40). For the latest version — and for > US users until re-listing — install via the manual / developer-mode path below. ### Chrome / Edge / Chromium browsers diff --git a/claude-plugin/skills/academy-terms/data/index.json b/claude-plugin/skills/academy-terms/data/index.json index 8dde8fe..265573e 100644 --- a/claude-plugin/skills/academy-terms/data/index.json +++ b/claude-plugin/skills/academy-terms/data/index.json @@ -1,7 +1,7 @@ { "plugin": "skillbridge-academy-terms", "generatedBy": "scripts/build-plugin.js", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "languages": [ "de", "es", diff --git a/claude-plugin/skills/academy-terms/data/terms.de.json b/claude-plugin/skills/academy-terms/data/terms.de.json index 5710005..2572fe1 100644 --- a/claude-plugin/skills/academy-terms/data/terms.de.json +++ b/claude-plugin/skills/academy-terms/data/terms.de.json @@ -2,7 +2,7 @@ "_meta": { "lang": "de", "langName": "Deutsch", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/de.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.es.json b/claude-plugin/skills/academy-terms/data/terms.es.json index bf6e7fa..021da59 100644 --- a/claude-plugin/skills/academy-terms/data/terms.es.json +++ b/claude-plugin/skills/academy-terms/data/terms.es.json @@ -2,7 +2,7 @@ "_meta": { "lang": "es", "langName": "Español", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/es.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.fr.json b/claude-plugin/skills/academy-terms/data/terms.fr.json index 7a366f6..644623b 100644 --- a/claude-plugin/skills/academy-terms/data/terms.fr.json +++ b/claude-plugin/skills/academy-terms/data/terms.fr.json @@ -2,7 +2,7 @@ "_meta": { "lang": "fr", "langName": "Français", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/fr.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.it.json b/claude-plugin/skills/academy-terms/data/terms.it.json index 91b5e95..60a1923 100644 --- a/claude-plugin/skills/academy-terms/data/terms.it.json +++ b/claude-plugin/skills/academy-terms/data/terms.it.json @@ -2,7 +2,7 @@ "_meta": { "lang": "it", "langName": "Italiano", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-06-03", "generatedFrom": "src/data/it.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.ja.json b/claude-plugin/skills/academy-terms/data/terms.ja.json index fe3cd91..423ceb2 100644 --- a/claude-plugin/skills/academy-terms/data/terms.ja.json +++ b/claude-plugin/skills/academy-terms/data/terms.ja.json @@ -2,7 +2,7 @@ "_meta": { "lang": "ja", "langName": "日本語", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/ja.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.ko.json b/claude-plugin/skills/academy-terms/data/terms.ko.json index 918645c..7a60fe1 100644 --- a/claude-plugin/skills/academy-terms/data/terms.ko.json +++ b/claude-plugin/skills/academy-terms/data/terms.ko.json @@ -2,7 +2,7 @@ "_meta": { "lang": "ko", "langName": "한국어", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/ko.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.pt-BR.json b/claude-plugin/skills/academy-terms/data/terms.pt-BR.json index 7ba3925..687cbe5 100644 --- a/claude-plugin/skills/academy-terms/data/terms.pt-BR.json +++ b/claude-plugin/skills/academy-terms/data/terms.pt-BR.json @@ -2,7 +2,7 @@ "_meta": { "lang": "pt-BR", "langName": "Português (BR)", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/pt-BR.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.ru.json b/claude-plugin/skills/academy-terms/data/terms.ru.json index 0c89c7d..5a11afa 100644 --- a/claude-plugin/skills/academy-terms/data/terms.ru.json +++ b/claude-plugin/skills/academy-terms/data/terms.ru.json @@ -2,7 +2,7 @@ "_meta": { "lang": "ru", "langName": "Русский", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/ru.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.vi.json b/claude-plugin/skills/academy-terms/data/terms.vi.json index 0f97603..206cded 100644 --- a/claude-plugin/skills/academy-terms/data/terms.vi.json +++ b/claude-plugin/skills/academy-terms/data/terms.vi.json @@ -2,7 +2,7 @@ "_meta": { "lang": "vi", "langName": "Tiếng Việt", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/vi.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.zh-CN.json b/claude-plugin/skills/academy-terms/data/terms.zh-CN.json index 102e448..fe6f9d1 100644 --- a/claude-plugin/skills/academy-terms/data/terms.zh-CN.json +++ b/claude-plugin/skills/academy-terms/data/terms.zh-CN.json @@ -2,7 +2,7 @@ "_meta": { "lang": "zh-CN", "langName": "简体中文", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/zh-CN.json", "termCount": 999 diff --git a/claude-plugin/skills/academy-terms/data/terms.zh-TW.json b/claude-plugin/skills/academy-terms/data/terms.zh-TW.json index ef9fce1..351d72e 100644 --- a/claude-plugin/skills/academy-terms/data/terms.zh-TW.json +++ b/claude-plugin/skills/academy-terms/data/terms.zh-TW.json @@ -2,7 +2,7 @@ "_meta": { "lang": "zh-TW", "langName": "中文(繁體)", - "sourceVersion": "3.5.39", + "sourceVersion": "3.5.40", "sourceLastUpdated": "2026-04-02", "generatedFrom": "src/data/zh-TW.json", "termCount": 999 diff --git a/docs/index.html b/docs/index.html index 105425f..c7ae330 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ SkillBridge — AI Course Translator for <!-- LANG_COUNT_START -->32+<!-- LANG_COUNT_END --> Languages - +