v3.5.40
What's Changed
- docs: v3.5.39 release-readiness fixes (course drift, tutor scope, stale checklist/TODO) by @heznpc in #158
- chore(store): English-only CWS listing + global/craft messaging by @heznpc in #159
- docs(positioning): 2026-06-02 market-pulse update — global, security-first, multi-channel by @heznpc in #160
- fix(positioning): correct geography vs first-party CSV (US top-2, Korea ~#6) by @heznpc in #161
- docs(positioning): Italy #1 = verified organic-referral mechanism by @heznpc in #162
- docs(positioning): primary-verify external claims + fix Snyk scope by @heznpc in #163
- chore(deps-dev): bump eslint from 10.4.0 to 10.4.1 in the dev-dependencies group by @dependabot[bot] in #164
- fix(i18n): re-translate Italian locale (was ~51% Spanish) + contamination guard by @heznpc in #166
- fix(i18n): fully regenerate Italian body — #166 left ~89 residual hybrids by @heznpc in #167
- fix(ci): stop CWS-drift soft-fail from opening recurring issues (#149) by @heznpc in #168
- docs(telemetry): flag Cloudflare sink non-compliant, mark sink under review by @heznpc in #169
- feat(plugin): add skillbridge-academy-terms Claude Code plugin by @heznpc in #170
- fix(build-plugin): eval course map instead of regex-parsing source; detect orphans by @heznpc in #171
- fix(i18n): stop protected-term restoration from corrupting correct CJK prose by @heznpc in #172
- fix(tutor): propagate chatStream bridge-not-ready as a rejection (stranded spinner) by @heznpc in #174
- fix(translate): treat Gemini "OK."/quoted/cased replies as OK, not a translation by @heznpc in #175
- fix(translate): length-guard Gemini improved branch (completes #175) by @heznpc in #176
- docs(positioning): fix plugin-directory target (community, not official) by @heznpc in #177
- Revert #177 (positioning plugin-directory patch) by @heznpc in #178
- chore(test): exclude dist/ from jest module map (Haste collision) by @heznpc in #179
- docs(privacy): align permission table with manifest + fix language count by @heznpc in #180
- docs: fix front-door factual errors + stale claims (pre-deploy) by @heznpc in #181
- fix(ui): restore the AI-Tutor FAB icon (collapsed to 0px on host pages) by @heznpc in #182
- chore(ui): trim inert declarations from the FAB icon fix + correct comment by @heznpc in #183
- feat: generate CWS store assets with the Playwright harness by @heznpc in #184
- fix(ui): clear/reset icon buttons leaked the host page's blue button color by @heznpc in #185
- docs: align README telemetry line (no telemetry shipped) by @heznpc in #186
- fix(translate): collapse Google-Translate gloss self-duplicates ("Claude(Claude)" → "Claude") by @heznpc in #187
- feat(ui): shadow-root isolation — FAB first (stage 1 of host-CSS-leak root fix) by @heznpc in #188
- feat(ui): shadow stylesheet loader — content.css transform + adopt (stage 2a) by @heznpc in #189
- feat(ui): move the tutor sidebar into the shadow root (stage 2b) by @heznpc in #190
- fix(ui): align tutor suggestion chips with the greeting bubble by @heznpc in #191
- feat(ui): isolate the TOC toggle + panel in the shadow root (stage 3a) by @heznpc in #192
- docs: shadow-migration scope decision + CHANGELOG catch-up (#182–#192) by @heznpc in #194
- release: cut v3.5.40 (CWS re-publication artifact) by @heznpc in #195
Full Changelog: v3.5.39...v3.5.40