Releases: heznpc/skillBridge
Releases · heznpc/skillBridge
v3.5.0 — Infrastructure Hardening, New Features & Deployment Pipeline
What's New
Features
- Per-Lesson Term Preview — floating card shows 6 key terms when entering a lesson, auto-dismisses after 15s, remembers dismissal per lesson
- PDF Export — export any translated lesson as a clean, print-friendly PDF from the sidebar header
- Offline Translation Cache — skip Google Translate when offline (cache-only mode), auto-retry pending items on reconnect
- Flashcard State Persistence — progress saved per course+language with stable card-text keys, current position restored on reload
Infrastructure
- IndexedDB Quota Management —
navigator.storage.estimate()check on init, auto-eviction of oldest 30% entries when storage is high,QuotaExceededErrorrecovery with user warning banner (11 languages) - Firefox AMO CD Workflow —
cd-firefox.ymlwithweb-ext@8 signautomation (requiresAMO_API_KEY/AMO_API_SECRETsecrets) - Chrome i18n Expansion — 22 new
_locales/directories, now covering 33 languages total
Docs
- CHANGELOG.md — v1.0.0–v3.4.0 with actual git commit dates
- Removed
ROADMAP.md(stale) and cleaned all references - Updated README, landing page, and 6 i18n READMEs to v3.5.0
Stats
- 32 files changed, +966 -190 lines
- 262/262 tests passing
- 0 lint errors
Full diff: v3.4.0...v3.5.0
v3.4.0 — Architecture Hardening & Full Course Coverage
What's New
Architecture & Module Decomposition
- Extracted 3 modules from
content.js(-280 lines):protected-terms.js,gemini-block.js,code-comments.js - Deduplicated
escapeHtml(single canonical source) - Removed dead code, tightened public API surfaces
Full Anthropic Academy Coverage (16/16 Courses)
- All 16 Skilljar courses now fully mapped with correct URL slugs
- Added
claudeCoworkandsubagentsdictionary sections to all 10 premium languages - Course-specific flashcard loading via
FLASHCARD_COURSE_MAPwith longest-first matching - Fixed slug substring collision bug (
ai-fluencyvsai-fluency-for-educators)
i18n Completeness
- zh-TW, pt-BR, ru, vi added to all 19 UI label objects
- All 10 premium languages now have complete UI translations
- Fixed hardcoded Korean-only error fallback in translator
RTL Support (Arabic & Hebrew)
dir="rtl"attribute now set on<html>for Arabic/Hebrew- Full CSS RTL section for sidebar, FAB, chat, progress bar, flashcards, and more
Offline Graceful Degradation
- Network status tracking via
online/offlineevents - Amber offline banner with localized message
- AI Tutor shows offline notice instead of failing silently
Developer Experience
- ESLint 9 + Prettier — enforced in CI, 0 errors
- esbuild bundling — optional
npm run build:bundle(43% JS size reduction) - JSDoc type annotations — translator, gemini-block, protected-terms, youtube-subtitles
- Auto-docs —
npm run docs+ GitHub Actions workflow auto-updates version/language info - Constants sync —
npm run check:syncvalidates background/content constant consistency
Bug Fixes
- Flashcard
_rawSectionscache not invalidated on language switch flashcardCardsnot reassigned after async section fetchoriginalCommentsMap missing size cap (inconsistent with other Maps)web_accessible_resourcesnarrowed (assets/*→assets/icons/*)- Removed dead
offlineflag from background.js error responses
Stats
- 36 files changed, +3,326 / -501 lines (feature code)
- 36 files formatted with Prettier (+1,975 / -1,187 lines)
- 262 tests passing, 0 ESLint errors
- Content bundle: 169.6 KB → 97.1 KB (43% smaller)
v2.1.0 — Certification Safety, New Courses, UX Overhaul
What's New
Certification Exam Safety
- Kill-switch for proctored exams: Extension fully disables on CCA-F and other proctored certification pages — no translation, no UI, no AI tutor — to prevent being flagged as a cheating tool
- Course-completion quizzes retain existing exam mode (answer choice protection)
New Course Support
- Added translations for Introduction to Claude Cowork, Introduction to subagents, and MCP Advanced Topics across all 6 premium languages
- New protected terms: Cowork, Dispatch, Computer Use, Subagent
UX Improvements
- Onboarding for all first-time visitors — including English speakers who previously saw nothing
- FAB pulse animation on first visit to draw attention to the AI Tutor
- Example question chips in sidebar for new users
- Error retry button in AI Tutor chat
- Exam warning on sidebar open (not after first message)
- History clear confirmation dialog
- Mobile responsive — sidebar goes full-width on screens ≤600px
- Localized aria-labels for dark toggle, FAB, sidebar buttons (7 languages)
Infrastructure
- SPA navigation handling: popstate, hashchange, pushState/replaceState detection — translations re-apply on route change
- MutationObserver reconnect after navigating away from certification pages
- Expired cache cleanup: stale IndexedDB entries deleted on access
- 4 new tests for CERT_DISABLE_PATTERNS (certification vs course URL separation)
- Firefox dist synced
- README, ROADMAP, CONTRIBUTING, TESTING docs updated
Bug Fixes
- Fixed domObserver not reconnecting after cert page → course page SPA navigation
- Fixed greeting not re-localizing on language switch (children count check)
- Moved inline style to CSS class
Full Changelog
v2.0.0 — Exam Mode, Firefox Support, Security Hardening
What's New
🎓 Exam Mode
- Auto-detect certification/quiz/assessment pages via URL patterns and DOM selectors
- Answer choices (radio/checkbox labels) are not translated to preserve academic integrity
- Exam mode banner warns users that answers stay in English
- AI Tutor switches to exam-safe mode — refuses to help with answers directly
🦊 Firefox & Edge Support
- Browser polyfill for cross-browser API compatibility
npm run build:firefoxgenerates a Firefox-compatible build- Edge works via Chromium compatibility (no changes needed)
🔒 Security Hardening
- DOM-based XSS sanitizer (replaces regex approach) with attribute allowlist
hrefallowlist: onlyhttp://,https://,#permitted — blocksjavascript:,data:, entity-encoding bypassesstyleattribute stripping prevents CSS-based UI redressing- FETCH_URL domain allowlist with subdomain matching
♿ Accessibility (WCAG 2.1 AA)
- ARIA roles and labels on all interactive elements
- Keyboard-navigable FAB button
- Progress toast with
role="status"andaria-live="polite"
⌨️ Keyboard Shortcuts
Ctrl+Shift+Stoggle AI Tutor sidebarCtrl+Shift+Ltoggle dark modeCtrl+Shift+/show shortcut help overlayEscapeclose panel,/focus chat input
⚡ Performance
- Viewport-first translation with
requestIdleCallbackchunking - GT queue cap (200 items) prevents unbounded memory growth
pruneOriginalTexts()cleans detached DOM elements- Centralized Skilljar selectors for DOM change resilience
🔧 Maintenance Automation
- Chrome Alarms: cache cleanup (every 24h), version check (every 7d)
- Automatic badge notification when new version is available
📚 Exam UI Terms
- 16 exam terms (Pass, Fail, Score, Retake, etc.) added to all 6 premium language dictionaries
Full Changelog: v1.0.1...v2.0.0
v1.0.1 — Chat font fixes, history formatting, dark mode & translations
What's Changed
Bug Fixes
- Override Skilljar global CSS on tutor chat bubble elements (#30)
- Unify font sizes between live chat and history detail view (#31)
- Enforce system font on chat bubbles to prevent language-specific font override (#32)
- Preserve markdown line breaks in chat history (#33)
- Fix dark mode not applying to table elements (#34)
Translations
- Add "Lesson Reflection" keyword to all 6 language dictionaries (#34)
Cleanup
- Remove unused Google site verification file
Full Changelog: v1.0.0...v1.0.1
v1.0.0 — Initial Release
SkillBridge v1.0.0
First stable release — published on Chrome Web Store.
Features
- Multi-language translation for Anthropic Academy (Skilljar)
- AI Tutor chatbot (Claude-powered)
- Dark mode support
- Responsive chat UI
- GDPR-compliant (local storage only, no external data transfer)
Links
Full Changelog: https://github.com/heznpc/skillbridge/commits/v1.0.0