Skip to content

feat: v2.1.0 — certification safety, new courses, UX overhaul#54

Merged
heznpc merged 3 commits intomainfrom
feat/v2.1.0-certification-ux
Mar 25, 2026
Merged

feat: v2.1.0 — certification safety, new courses, UX overhaul#54
heznpc merged 3 commits intomainfrom
feat/v2.1.0-certification-ux

Conversation

@heznpc
Copy link
Copy Markdown
Owner

@heznpc heznpc commented Mar 24, 2026

Summary

  • Certification exam kill-switch: proctored exams (CCA-F etc.) fully disable the extension to prevent being flagged as a cheating tool
  • New course support: translations for Claude Cowork, subagents, MCP Advanced Topics across all 6 premium languages
  • UX overhaul: onboarding for all first-time visitors, FAB pulse, example questions, error retry, mobile responsive, i18n aria-labels
  • SPA navigation: handles pushState/replaceState/popstate for seamless page transitions
  • Infrastructure: expired cache cleanup, CERT test coverage, version bump to 2.1.0

Changes (18 files, +568 / -103)

Certification Safety

  • CERT_DISABLE_PATTERNS in constants.js — 6 URL patterns for proctored exams
  • Kill-switch at top of content.js IIFE — return before any DOM work
  • Separated from course quiz exam mode (which is preserved)

New Courses & Terms

  • 6 premium dictionaries: Cowork, Dispatch, Computer Use, Subagent entries
  • Protected terms auto-correction for new product names

UX Improvements

  • Onboarding banner for English-speaking first-time visitors
  • FAB pulse animation (3 cycles) on first visit
  • Example question chips in AI Tutor sidebar
  • Error retry button in chat
  • Exam warning on sidebar open (not after first message)
  • History clear confirmation dialog
  • Mobile responsive sidebar (full-width on ≤600px)
  • Localized aria-labels: dark toggle, FAB, sidebar buttons

Infrastructure

  • SPA route detection: popstate + hashchange + pushState/replaceState wrap
  • Expired IndexedDB cache entries deleted on access
  • 4 new tests for CERT_DISABLE_PATTERNS
  • Firefox dist synced
  • README & ROADMAP updated

Test plan

  • npm test — 236 tests pass
  • Firefox build: npm run build:firefox — clean
  • Manual: visit certification URL → extension should not inject anything
  • Manual: visit course quiz → exam mode banner + answer skip
  • Manual: first visit as English browser → onboarding banner appears
  • Manual: FAB pulses on first visit, stops on click
  • Manual: example questions work in sidebar
  • Manual: mobile viewport → sidebar goes full-width

heznpc added 3 commits March 25, 2026 04:52
- Certification exam kill-switch: fully disable extension on proctored
  CCA-F pages to prevent being flagged as cheating tool
- Separate course quizzes (exam mode) from certification exams (disable)
- Add translations for new courses: Claude Cowork, subagents, MCP Advanced
- New protected terms: Cowork, Dispatch, Computer Use, Subagent
- SPA navigation handling: popstate, hashchange, pushState/replaceState
- Onboarding flow for ALL first-time visitors (including English speakers)
- FAB pulse animation on first visit
- Example question chips in AI Tutor sidebar
- Error retry button in AI Tutor chat
- Exam mode warning shown immediately on sidebar open
- History clear confirmation dialog
- Mobile responsive: sidebar full-width on small screens
- i18n: localize aria-labels and tooltips (dark toggle, FAB, sidebar)
- Expired cache entries now deleted from IndexedDB on access
- CERT_DISABLE_PATTERNS test coverage (4 tests)
- Firefox dist synced, README/ROADMAP updated
- TESTING.md: add cert kill-switch, onboarding, SPA, retry/confirm QA items
- TESTING.md: fix stored keys list (welcomeShown, fabSeen)
- CONTRIBUTING.md: document new constants (CERT_DISABLE_PATTERNS, ONBOARDING_LABELS, A11Y_LABELS, EXAMPLE_QUESTIONS)
- CONTRIBUTING.md: update dictionary section listing with new courses
…ne style

- content.js: reconnect MutationObserver when navigating back from
  certification page to a course (observer was disconnected but never
  re-enabled, breaking dynamic content translation)
- sidebar-chat.js: fix greeting re-localize check — children count is 2
  now (greeting + example questions), not 1
- header-controls.js: move inline style to CSS class si18n-banner-lang-inline
@heznpc heznpc merged commit e2bd2ce into main Mar 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant