HanFlash v3.3.0 Release Notes
🚀 HanFlash v3.3.0 — The Deep Learning Update
This release focuses on retention science: multi-modal encoding, focused study sessions, and daily progress visibility. Every feature in v3.3.0 is grounded in second-language acquisition research and designed to make Hanzi stick — not just look familiar.
✨ New Features
🧩 Radical Decomposition Panel
Characters are no longer opaque symbols. Every flashcard and vocabulary card now shows a character component breakdown with mnemonic anchors.
- 明 = 日 (sun) + 月 (moon) → *"bright because sun and moon both shine"*
- Covers ~150 key HSK 1–4 characters with components, pinyin, and English meanings
- Compact mode on vocabulary cards — small chips that don't interrupt the reading flow
- Full mode on the flashcard back face — detailed breakdown with the mnemonic anchor
- Lazy-loaded from
radical-map.jsonwith a shared module cache — zero repeated network requests
🍅 Focused Session Mode (Pomodoro)
A dedicated /focus route that eliminates decision fatigue and keeps you in a flow state.
- Launcher — configure before every session: card count (10 / 20 / 30 / 50), HSK level (All / HSK 1–4), card pool (Due today / Favorites / Hard words / Random), and timer (None / 15 / 25 / 45 min)
- Session — distraction-free flashcard mode with a live SVG ring countdown timer, progress bar, visibility toggles, and full SRS grading (Again / Hard / Good / Easy)
- Summary — completion screen with per-grade bar chart, updated streak badge, and daily goal indicator
- Session config is persisted to
localStorageso your last setup is always pre-filled - Keyboard shortcuts active in session:
Spaceto flip,1–4to grade,Fto favorite,Sto shuffle,?for the overlay
✍️ Sentence Drills (/drills)
Active recall through contextual sentence practice — proven to be more effective than passive card reading.
- Fill-in-the-blank format: real HSK example sentences with the target word replaced by a blank
- Type the missing character(s) and get instant correct/incorrect feedback
- Correct: green confirmation with auto-advance after 0.9 seconds
- Incorrect: red feedback, correct answer revealed, Try again / Skip options
- "Show answer" button for when you want to reveal without a penalty
- Level filter (All HSK / HSK 1–4) with progress bar and session summary at the end
- Only uses vocabulary items that have matching example sentences — no broken drills
📊 Daily Review Dashboard
Your study progress is now visible the moment you open the app — on the home page, zero interaction needed.
- Daily goal ring — SVG arc showing cards reviewed vs. your daily goal
- Streak tracker — 🔥 flame with milestone badges at 7 days, 30 days, and 100 days
- Mastery meter — percentage of known + mastered words with a progress bar
- SRS forecast — cards due today and tomorrow, so you can plan your session
- Reads entirely from
localStorage— instant render, no server roundtrip, works offline
🎨 UX & Comfort Improvements
🌙 Dark Mode
- Full dark theme via CSS custom properties (
[data-theme="dark"]on the<html>element) - Toggle button (sun ☀️ / moon 🌙) in the header — always one click away
- Respects
prefers-color-schemeon first visit - FOUC-free — an inline
<script>in<head>applies your saved theme before React hydrates, so there is never a white flash on dark-mode loads - Persists across sessions via
localStorage
🔡 Hanzi Font Size Control
- A− and A+ buttons in the header to adjust the Hanzi character display size
- Scales from 0.8× to 1.6× in smooth steps using a
--hanzi-scaleCSS custom property - Works across flashcards, vocabulary cards, and all character displays
- Preference persists across sessions
⌨️ Keyboard Shortcuts
Full keyboard navigation for flashcard and focus sessions:
Space/Enter— flip card→/←— next / previous card1— Again ·2— Hard ·3— Good ·4— Easy (SRS grades)F— toggle favoriteS— shuffle deck?— open keyboard shortcuts overlay
The overlay lists all shortcuts in context (flashcard vs. global) and can be dismissed with Esc.
🔗 Navigation & Discoverability
- Drills added to the desktop header navigation
- Drills added to the mobile bottom navigation (replaces the HSK tab slot)
- Drills and Focus Mode added to the footer Study tools column and the quick-access grid
/drillsroute has full SEO metadata (<title>, meta description, keywords)
🔧 Dependency Updates
All runtime and development dependencies updated to their latest stable versions:
- `next`
16.3.4→16.3.5 - `react` / `react-dom`
19.2.3→19.3.0 - `@libsql/client`
0.17.0→0.18.0 - `@vercel/analytics`
1.6.1→2.0.1 - `@types/react` / `react-dom`
19.2.x→19.3.0 - `@types/node`
25.x→26.6.0 - `eslint-config-next`
16.1.1→16.3.5 - `postcss`
8.5.23→8.5.28 - `autoprefixer`
10.4.x→10.6.1 - 0 vulnerabilities after
npm audit fix
> Note: tailwindcss remains at 3.x (v4 requires a full config migration), eslint at 9.x, and typescript at ~5.9 (both blocked by typescript-eslint's peer constraint <6.0.0). These will be addressed in a dedicated migration update.
🐛 Bug Fixes
- Fixed stale closure in focus session
handleRate— grade counts passed to analytics now reflect the actual final state of the session - Fixed
useCallbackdependency array in focus page —favoritesSet(theSet<string>) is now correctly listed instead offavoriteIds(thestring[]), preventing unnecessary re-renders - Removed stale
eslint-disable-next-linedirective inlayout.tsxthat no longer had an effect
📦 What's Included
- ✅ Radical decomposition panel (VocabularyCard + Flashcard back face)
- ✅ Focused Session Mode with Pomodoro timer at
/focus - ✅ Sentence Drills with fill-in-the-blank at
/drills - ✅ Daily Review Dashboard on the home page
- ✅ Dark mode with FOUC prevention
- ✅ Hanzi font size A− / A+ control
- ✅ Full keyboard shortcut system with overlay
- ✅ Drills in desktop nav, mobile bottom nav, and footer
- ✅ All runtime and dev dependencies updated
- ✅ 0 TypeScript errors · 0 lint errors · 0 vulnerabilities · 66/66 pages compiled
🔮 Coming Next
- HSK 5–6 vocabulary expansion
- Stroke order animation (Hanzi Writer integration)
- Tone trainer with pitch contour visualization
- Mnemonic story builder (user-generated character stories)
- Tailwind CSS v4 migration
📞 Feedback & Support
- Issues: Report bugs on GitHub Issues
- Feature Requests: Propose ideas via GitHub Discussions
- Contributions: Pull requests are welcome
📄 License
This project is licensed under the MIT License. See the LICENSE file for details.
Happy Learning! 🎓
*HanFlash — Learn Chinese vocabulary with focus and efficiency.*