soroban-abacus-flashcards/packages/abacus-react/CHANGELOG.md

2210 lines
337 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [2.19.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.18.0...abacus-react-v2.19.0) (2026-01-01)
### Features
- **vision:** add physical abacus column setting and fix remote flash toggle ([b206eb3](https://github.com/antialias/soroban-abacus-flashcards/commit/b206eb30712e4b98525a9fa2544c2b5a235a8b72))
- **vision:** improve remote camera calibration and UX ([8846cec](https://github.com/antialias/soroban-abacus-flashcards/commit/8846cece93941a36c187abd4ecee9cc88de0c2ec))
# [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.17.0...abacus-react-v2.18.0) (2026-01-01)
### Bug Fixes
- allow teacher-parents to enroll their children in other classrooms ([52df7f4](https://github.com/antialias/soroban-abacus-flashcards/commit/52df7f469718128fd3d8933941ffb8d4bb8db208))
- **bkt:** handle missing helpLevelUsed in legacy data causing NaN ([b300ed9](https://github.com/antialias/soroban-abacus-flashcards/commit/b300ed9f5cc3bfb0c7b28faafe81c80a59444998))
- **camera:** handle race condition in camera initialization ([2a24700](https://github.com/antialias/soroban-abacus-flashcards/commit/2a24700e6cb6efe0ae35d9ebd6c428e3a1a1a736))
- **classroom:** auto-transition tutorial→session observation + fix NaN display ([962a52d](https://github.com/antialias/soroban-abacus-flashcards/commit/962a52d7562f566e78f6272816b049bf77daa7c9))
- **classroom:** broadcast digit-by-digit answer and correct phase indicator ([fb73e85](https://github.com/antialias/soroban-abacus-flashcards/commit/fb73e85f2daacefafa572e03c16b10fab619ea57))
- **dashboard:** compute skill stats from session results in curriculum API ([11d4846](https://github.com/antialias/soroban-abacus-flashcards/commit/11d48465d710d0293ebf41f64b4fd0f1f03d8bf8))
- **db:** add missing is_paused column to session_plans ([9d8b5e1](https://github.com/antialias/soroban-abacus-flashcards/commit/9d8b5e1148911f881d08d07608debaaef91609c2))
- **db:** add missing journal entries for migrations 0041-0042 ([398603c](https://github.com/antialias/soroban-abacus-flashcards/commit/398603c75a094e28122c5ccdced5b82badc7fbfb))
- **docker:** add canvas native deps for jsdom/vitest ([5f51bc1](https://github.com/antialias/soroban-abacus-flashcards/commit/5f51bc1871aec325feb32a0b29edabb3b6c5dd1f))
- **docker:** override canvas with mock package for Alpine/musl ([8be1995](https://github.com/antialias/soroban-abacus-flashcards/commit/8be19958af624d22fa2c6cb48f5723f5efc820c3))
- **docker:** skip canvas native build (optional jsdom dep) ([d717f44](https://github.com/antialias/soroban-abacus-flashcards/commit/d717f44fccb8ed2baa30499df65784a4b89c6ffc))
- **observer:** seed results panel with full session history ([aab7469](https://github.com/antialias/soroban-abacus-flashcards/commit/aab7469d9ea87c91a0165e4c48a60ac130cdc1b2))
- only show session stats when there are actual problems ([62aefad](https://github.com/antialias/soroban-abacus-flashcards/commit/62aefad6766ba32ad27e8ed3db621a6f77520cbe))
- **practice:** allow teachers to create student profiles ([5fee129](https://github.com/antialias/soroban-abacus-flashcards/commit/5fee1297e1775b5e6133919d179e23b6e70b2518))
- **practice:** always show add student FAB button ([a658414](https://github.com/antialias/soroban-abacus-flashcards/commit/a6584143ebf1f3e5b3c9f3283e690458a06beb60))
- **practice:** real-time progress in observer modal + numeric answer comparison ([c0e63ff](https://github.com/antialias/soroban-abacus-flashcards/commit/c0e63ff68b26fd37eedd657504f7f79e5ce40a10))
- **practice:** show active sessions for teacher's own children ([ece3197](https://github.com/antialias/soroban-abacus-flashcards/commit/ece319738b6ab1882469d79ea24b604316d28b34))
- **practice:** use Next.js Link for student tiles + fix session observer z-index ([6def610](https://github.com/antialias/soroban-abacus-flashcards/commit/6def6108771b427e4885bebd23cecdad7a50efb0))
- **seed:** accurate BKT simulation for developing classifications ([d5e4c85](https://github.com/antialias/soroban-abacus-flashcards/commit/d5e4c858db8866e5177b8fa2317aba42b30171e8))
- **share:** use getShareUrl for correct production URLs ([98a69f1](https://github.com/antialias/soroban-abacus-flashcards/commit/98a69f1f80e465415edce49043e2c019a856f8e5))
- **vision:** fix manual calibration overlay not showing on remote camera ([44dcb01](https://github.com/antialias/soroban-abacus-flashcards/commit/44dcb01473bac00c09dddbbefd77dd26b3a27817))
- **vision:** fix remote camera calibration coordinate system ([e52f94e](https://github.com/antialias/soroban-abacus-flashcards/commit/e52f94e4b476658c41f23668d2941af1288e4ed8))
- **vision:** swap corners diagonally for webcam orientation ([dd8efe3](https://github.com/antialias/soroban-abacus-flashcards/commit/dd8efe379d4bbcfc4b60f7c00ad6180465b7e7b6))
### Features
- API authorization audit + teacher enrollment UI + share codes ([d6e369f](https://github.com/antialias/soroban-abacus-flashcards/commit/d6e369f9dc9b963938ca8de4562c87f9f1b6d389))
- **camera:** auto-start camera when opening camera modal ([f3bb0ae](https://github.com/antialias/soroban-abacus-flashcards/commit/f3bb0aee4fe23eeffc7b7099981f51ec54636a35))
- **camera:** fullscreen modal with edge-to-edge preview ([db17c96](https://github.com/antialias/soroban-abacus-flashcards/commit/db17c96168078f2d0d723b24395096756a2f63ec))
- **chart:** add grouped structure to chart hover tooltip ([594e22c](https://github.com/antialias/soroban-abacus-flashcards/commit/594e22c428e0a4ee4322c233f127f9250e88b5fa))
- **chart:** improve skill classification visual hierarchy with colors and patterns ([c9518a6](https://github.com/antialias/soroban-abacus-flashcards/commit/c9518a6b9952bda60ab2663d7655092637139fec))
- **classroom:** add active sessions API endpoint ([07f6bb7](https://github.com/antialias/soroban-abacus-flashcards/commit/07f6bb7f9cc2dfbe6da8d16361e89b698405e1c0))
- **classroom:** add real-time enrollment/unenrollment reactivity ([a0693e9](https://github.com/antialias/soroban-abacus-flashcards/commit/a0693e90840f651094f852a6a6f523013786b322))
- **classroom:** add session broadcast and active session indicators ([9636f7f](https://github.com/antialias/soroban-abacus-flashcards/commit/9636f7f44a71da022352c19e80f9ec147dd3af5f))
- **classroom:** add unified add-student modal with two-column layout ([dca696a](https://github.com/antialias/soroban-abacus-flashcards/commit/dca696a29fc20a2697b491c0d2efbe036569a716))
- **classroom:** add unified TeacherClassroomCard with auto-enrollment ([4d6adf3](https://github.com/antialias/soroban-abacus-flashcards/commit/4d6adf359ede5d17c2decd9275ba68635ee0bd4f))
- **classroom:** complete reactivity fixes (Steps 7-11) ([2015494](https://github.com/antialias/soroban-abacus-flashcards/commit/2015494c0eca28457031aa39490d70a2af3da4df))
- **classroom:** consolidate filter pill to single-row design ([78a63e3](https://github.com/antialias/soroban-abacus-flashcards/commit/78a63e35e39948729cbf41e6c5af4e688a506c8d))
- **classroom:** implement enrollment system (Phase 4) ([1952a41](https://github.com/antialias/soroban-abacus-flashcards/commit/1952a412edcd04b332655199737c340a4389d174))
- **classroom:** implement entry prompts system ([de39ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/de39ab52cc60f5782fc291246f98013ae15142ca))
- **classroom:** implement real-time enrollment updates ([bbe0500](https://github.com/antialias/soroban-abacus-flashcards/commit/bbe0500fe9000d0d016417c1b586e9569e3eb888))
- **classroom:** implement real-time presence with WebSocket (Phase 6) ([629bfcf](https://github.com/antialias/soroban-abacus-flashcards/commit/629bfcfc03c611cd3928bb98a67bace485ee3a7b))
- **classroom:** implement real-time session observation (Step 3) ([2feb684](https://github.com/antialias/soroban-abacus-flashcards/commit/2feb6844a4fce48ba7a87d2a77769783c4e8b2f9))
- **classroom:** implement real-time skill tutorial observation ([4b73879](https://github.com/antialias/soroban-abacus-flashcards/commit/4b7387905d2b050327f9b67b834d4e9dfc0b19cb))
- **classroom:** implement teacher classroom dashboard (Phase 3) ([2202716](https://github.com/antialias/soroban-abacus-flashcards/commit/2202716f563053624dbe5c6abb969a3b0d452fd1))
- **classroom:** implement teacher-initiated pause and fix manual pause ([ccea0f8](https://github.com/antialias/soroban-abacus-flashcards/commit/ccea0f86ac213b32cac7363f28e193b1976bd553))
- **classroom:** implement two-way abacus sync for session observation (Step 5) ([2f7002e](https://github.com/antialias/soroban-abacus-flashcards/commit/2f7002e5759db705e213eb9f8474589c8e6149e7))
- **classroom:** improve enrollment reactivity and UX ([77336be](https://github.com/antialias/soroban-abacus-flashcards/commit/77336bea5b5bbf16b393da13588de6e5082e818f))
- **classroom:** integrate create student form into unified add-student modal ([da92289](https://github.com/antialias/soroban-abacus-flashcards/commit/da92289ed1ae570ff48cc28818122d4640d6c84c))
- **classroom:** integrate Enter Classroom into StudentActionMenu ([2f1b9df](https://github.com/antialias/soroban-abacus-flashcards/commit/2f1b9df9d9d605b0c120af6961670ae84718c8d7))
- **dashboard:** add skill progress chart with trend analysis and timing awareness ([1fc8949](https://github.com/antialias/soroban-abacus-flashcards/commit/1fc8949b0664591aa1b0cfcd7c7abd2a4c586281))
- enable parents to observe children's practice sessions ([7b82995](https://github.com/antialias/soroban-abacus-flashcards/commit/7b829956644d369dfdfb0789a33e0b857958e84f))
- **family:** implement parent-to-parent family code sharing (Phase 2) ([0284227](https://github.com/antialias/soroban-abacus-flashcards/commit/02842270c9278174934407a9620777589f79ee1e))
- improve session summary header and add practice type badges ([518fe15](https://github.com/antialias/soroban-abacus-flashcards/commit/518fe153c9fc2ae2f2f7fc0ed4de27ee1c5c5646))
- **observer:** add live active session item to history list ([91d6d6a](https://github.com/antialias/soroban-abacus-flashcards/commit/91d6d6a1b6938b559d8488fe296d562695cf16d1))
- **observer:** add live results panel and session progress indicator ([8527f89](https://github.com/antialias/soroban-abacus-flashcards/commit/8527f892e2b300d51d83056d779474592a2fd955))
- **observer:** implement shareable session observation links ([3ac7b46](https://github.com/antialias/soroban-abacus-flashcards/commit/3ac7b460ec0dc207a5691fbed8d539b484374fe7))
- **practice:** add auto-rotation for captured documents ([ff79a28](https://github.com/antialias/soroban-abacus-flashcards/commit/ff79a28c657fb0a19752990e23f9bb0ced4e9343))
- **practice:** add document adjustment UI and auto-capture ([473b7db](https://github.com/antialias/soroban-abacus-flashcards/commit/473b7dbd7cd15be511351a1fd303a0fc32b9d941))
- **practice:** add document scanning with multi-quad tracking ([5f4f1fd](https://github.com/antialias/soroban-abacus-flashcards/commit/5f4f1fde3372e5d65d3f399216b04ab0e4c9972e))
- **practice:** add fixed filter bar, sticky headers, and shared EmojiPicker ([0e03561](https://github.com/antialias/soroban-abacus-flashcards/commit/0e0356113ddef1ec92cd0b3fda0852d99c6067d2))
- **practice:** add intervention system and improve skill chart hierarchy ([bf5b99a](https://github.com/antialias/soroban-abacus-flashcards/commit/bf5b99afe967c0b17765a7e6f1911d03201eed95))
- **practice:** add mini start practice banner to QuickLook modal ([d1176da](https://github.com/antialias/soroban-abacus-flashcards/commit/d1176da9aa8bd926ca96699d1091e65f4a34d782))
- **practice:** add Needs Attention to unified compact layout ([8727782](https://github.com/antialias/soroban-abacus-flashcards/commit/8727782e45c7ac269c4dbcc223b2a8be57be8bb2))
- **practice:** add photo attachments for practice sessions ([9b85311](https://github.com/antialias/soroban-abacus-flashcards/commit/9b853116ecfbb19bec39923da635374963cf002c))
- **practice:** add photo editing with rotation persistence and auto-detect ([156a0df](https://github.com/antialias/soroban-abacus-flashcards/commit/156a0dfe967a48c211be527da27c92ef8b1ab20c))
- **practice:** add smooth fullscreen transition from QuickLook to dashboard ([cb8b0df](https://github.com/antialias/soroban-abacus-flashcards/commit/cb8b0dff676d48bcba4775c5981ac357d573ab27))
- **practice:** add student organization with filtering and archiving ([538718a](https://github.com/antialias/soroban-abacus-flashcards/commit/538718a814402bd9c83b3c354c5a3386ff69104d))
- **practice:** add StudentActionMenu to dashboard + fix z-index layering ([bf262e7](https://github.com/antialias/soroban-abacus-flashcards/commit/bf262e7d5305e2358d3a2464db10bc3b0866104c))
- **practice:** compact single-student categories and UI improvements ([0e7f326](https://github.com/antialias/soroban-abacus-flashcards/commit/0e7f3265fe2de3b693c47a8a556d3e7cbc726ef4))
- **practice:** implement measurement-based compact layout ([1656b93](https://github.com/antialias/soroban-abacus-flashcards/commit/1656b9324f6fb24a318820e04559c480c99762f5))
- **practice:** implement retry wrong problems system ([474c4da](https://github.com/antialias/soroban-abacus-flashcards/commit/474c4da05a8d761e63a32187f5c301b57fb6aae4))
- **practice:** parent session observation + relationship UI + error boundaries ([07484fd](https://github.com/antialias/soroban-abacus-flashcards/commit/07484fdfac3c6613a6a7709bdee25e1f8e047227))
- **practice:** polish unified student list with keyboard nav and mobile UX ([0ba1551](https://github.com/antialias/soroban-abacus-flashcards/commit/0ba1551feaa30d8f41ec5d771c00561396b043f3))
- **seed:** add category field to all mock student profiles ([f883fbf](https://github.com/antialias/soroban-abacus-flashcards/commit/f883fbfe233b7fb3d366062e7c156e3fc8e0e3a7))
- **session-summary:** redesign ProblemToReview with BKT integration and animations ([430c46a](https://github.com/antialias/soroban-abacus-flashcards/commit/430c46adb929a6c0ce7c67da4b1df7d3e2846cfd))
- **storybook:** add TeacherClassroomCard stories ([a5e5788](https://github.com/antialias/soroban-abacus-flashcards/commit/a5e5788fa96f57e0d918620e357f7920ef792b19))
- **vision:** add AbacusVisionBridge for physical soroban detection ([47088e4](https://github.com/antialias/soroban-abacus-flashcards/commit/47088e4850c25e76fe49879587227b46f699ba91))
- **vision:** add ArUco marker auto-calibration for abacus detection ([9e9a06f](https://github.com/antialias/soroban-abacus-flashcards/commit/9e9a06f2e4dc37d208ac19259be9b9830c7ad949))
- **vision:** add remote phone camera support for abacus detection ([8e4975d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e4975d395c4b10bc40ae2c71473fdb1a50c114c))
### Performance Improvements
- reduce practice page dev bundle from 47MB to 115KB ([fd1df93](https://github.com/antialias/soroban-abacus-flashcards/commit/fd1df93a8fa320800275c135d5dd89390eb72c19))
# [2.17.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.16.0...abacus-react-v2.17.0) (2025-12-20)
### Bug Fixes
- **modal:** expand settings by default on tall phones to fill space ([2ffb71a](https://github.com/antialias/soroban-abacus-flashcards/commit/2ffb71ab282d27993a733cc4f2f9107586fe9764))
- **modal:** make StartPracticeModal full-screen on mobile phones ([1383db8](https://github.com/antialias/soroban-abacus-flashcards/commit/1383db8185e2fbbb3c2c6ef8ceb7096c44ad9777))
### Features
- **banner:** add scroll-based projection with FLIP animation ([d405038](https://github.com/antialias/soroban-abacus-flashcards/commit/d405038711666bf54ff96346541deb702118eff4))
- **modal:** redesign StartPracticeModal layout for tall phones ([0e2fcee](https://github.com/antialias/soroban-abacus-flashcards/commit/0e2fcee0ae3b1d78d51be6d319b36bee41b9d7ad))
- **practice:** unify session resume/start into projecting banner ([d128e80](https://github.com/antialias/soroban-abacus-flashcards/commit/d128e808dbb7a37b1dfb70fe88d32bb9fa89ab8f))
- **session-summary:** unify summary and debug views with progressive disclosure ([2977bd5](https://github.com/antialias/soroban-abacus-flashcards/commit/2977bd57df743f936af8b81d8216fbe514bb2f76))
# [2.16.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.15.0...abacus-react-v2.16.0) (2025-12-19)
### Bug Fixes
- **blog:** correct misleading claim about BKT feeding problem generation ([184cba0](https://github.com/antialias/soroban-abacus-flashcards/commit/184cba0ec845fa253a7c8a70bb989b1acc8ae711))
- **blog:** regenerate trajectory data from correct snapshot ([ce85565](https://github.com/antialias/soroban-abacus-flashcards/commit/ce85565f06b97d90f6fe66be91932d744bff3e44))
- **dashboard:** make student dashboard responsive for small screens ([129907f](https://github.com/antialias/soroban-abacus-flashcards/commit/129907fcc677f636ca78a7fe067cddec9135841f))
- **dashboard:** use React Query mutations instead of direct fetch ([ff7554b](https://github.com/antialias/soroban-abacus-flashcards/commit/ff7554b0055011fffc4a72aedfa68cd7701de754))
- **migration:** add statement-breakpoint between CREATE and INSERT ([ba68cfc](https://github.com/antialias/soroban-abacus-flashcards/commit/ba68cfc75d7c99e96b80c8864eb0990c4232d151))
- **practice:** add comprehensive logging and validation in recordSlotResult ([85d36c8](https://github.com/antialias/soroban-abacus-flashcards/commit/85d36c80a29b9a6c2148ac86cd74993613995c73))
- **practice:** add defensive checks in recordSlotResult ([a33e3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/a33e3e6d2b348beff90a27e2f92ac29c2e68e85f))
- **practice:** add responsive styles to SessionModeBanner for small screens ([be08efe](https://github.com/antialias/soroban-abacus-flashcards/commit/be08efe06f108514d3c62f32b91ed51c3ecae603))
- **practice:** check all later prefix sums for ambiguity, not just final answer ([43e7db4](https://github.com/antialias/soroban-abacus-flashcards/commit/43e7db4e888348ed875ef8f07e7da588ff124a78))
- **practice:** correct five complement skill detection for addition and subtraction ([1139c4d](https://github.com/antialias/soroban-abacus-flashcards/commit/1139c4d1a1ecdffab34334d35c6a1129f0d494f2))
- **practice:** correct pause phrase attribution ([cc5bb47](https://github.com/antialias/soroban-abacus-flashcards/commit/cc5bb479c6e666393ebae3e437e4da1b0c1fa273))
- **practice:** correct route path for resume session ([1a7945d](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7945dd0b85188619d1b9a4c9cd6e76910e5306))
- **practice:** disable auto-scroll and add modern PWA meta tag ([8a9afa8](https://github.com/antialias/soroban-abacus-flashcards/commit/8a9afa86bc6bf38b0668dd63fd0b1a43d65e2763))
- **practice:** ensure badges are never taller than wide ([5730bd6](https://github.com/antialias/soroban-abacus-flashcards/commit/5730bd61128bb9d1c1b5603dc25861302aed71bd))
- **practice:** ensure keypad spans full screen width ([4b8cbdf](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8cbdf83cada8d35e19d567c99e4258f1c13d59))
- **practice:** ensure speed meter bar is always visible ([0c40dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/0c40dd5c42e534442ef201b28ef93005ae3d8112))
- **practice:** fix circular import causing REINFORCEMENT_CONFIG.creditMultipliers to be undefined ([147974a](https://github.com/antialias/soroban-abacus-flashcards/commit/147974a9f05ab6e46e0a21649be3bc1b226ab3e2))
- **practice:** fix invisible resume button by using inline styles ([dd3dd45](https://github.com/antialias/soroban-abacus-flashcards/commit/dd3dd4507c10dc78dfc0eb1040c4e8932e7b23a9))
- **practice:** handle paused state transitions and add complete phase ([36c9ec3](https://github.com/antialias/soroban-abacus-flashcards/commit/36c9ec3301f70b9b4437e766f0537c6fc14d875c))
- **practice:** improve dark mode contrast for sub-nav buttons ([59f574c](https://github.com/antialias/soroban-abacus-flashcards/commit/59f574c178fe8e3020b322b3c0a8e841a3f20f2a))
- **practice:** improve mobile layout + floating abacus positioning ([3c9406a](https://github.com/antialias/soroban-abacus-flashcards/commit/3c9406afc5d2d697f42e3e439aada8d154c12ca9))
- **practice:** include endEarly.data in currentPlan priority chain ([28b3b30](https://github.com/antialias/soroban-abacus-flashcards/commit/28b3b30da612954b03df0f8b54128f4873d6fc3a))
- **practice:** make session plan page self-sufficient for data loading ([7243502](https://github.com/antialias/soroban-abacus-flashcards/commit/7243502873f269b0ef96d31e29379b5937a45d18))
- **practice:** move SessionPausedModal into ActiveSession for single pause state ([f0a9608](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a9608a6b89f10053a09606041380dbfc0aa05a))
- **practice:** only show landscape keypad on phone-sized screens ([6c09976](https://github.com/antialias/soroban-abacus-flashcards/commit/6c09976d4b89985aa75f6aa5a5a1e14481ad04e1))
- **practice:** prevent keypad from covering nav and content ([839171c](https://github.com/antialias/soroban-abacus-flashcards/commit/839171c0ff496605857f447e6e5abe84e1c376d0))
- **practice:** prevent stray "0" rendering in problem area ([7a2390b](https://github.com/antialias/soroban-abacus-flashcards/commit/7a2390bd1b722e163f9fbf2cb2d883091163abfd))
- **practice:** remove empty spacer button from keypad layout ([1058f41](https://github.com/antialias/soroban-abacus-flashcards/commit/1058f411c6e768a303914d122d7c40c338f15a1c))
- **practice:** remove fallback random problem generation ([f95456d](https://github.com/antialias/soroban-abacus-flashcards/commit/f95456dadcb919c59c3023b7b21ab1857889fcc2))
- **practice:** size answer boxes for intermediate prefix sums ([5cfbeeb](https://github.com/antialias/soroban-abacus-flashcards/commit/5cfbeeb8df66a25e7629bd50ec778feac0797690))
- **practice:** state-aware complexity selection with graceful fallback ([6c88dcf](https://github.com/antialias/soroban-abacus-flashcards/commit/6c88dcfdc570163295ee7bda7a95fd33e51e9810))
- **practice:** update pun to "We pressed paws!" ([4800a48](https://github.com/antialias/soroban-abacus-flashcards/commit/4800a48128259b1e2c5598d2b37dfbf6a1d3b9e8))
- **practice:** use inline styles for progress bar ([f45428e](https://github.com/antialias/soroban-abacus-flashcards/commit/f45428ed8233ba6c4ef60667d5f768fac4339fb6))
- **practice:** use raw CSS media query for landscape keypad visibility ([31fbf80](https://github.com/antialias/soroban-abacus-flashcards/commit/31fbf80b8f9a09fff4f780055892931d60fe9a6c))
- **practice:** use React Query cache for /resume page session data ([ae1a0a8](https://github.com/antialias/soroban-abacus-flashcards/commit/ae1a0a8e2d40df7e5d3a19eae04e427a13e4e583))
- **StartPracticeModal:** responsive improvements + integrated tutorial CTA ([56742c5](https://github.com/antialias/soroban-abacus-flashcards/commit/56742c511dff81b597eab84f28b64bd0d4ff6499))
- sync pause state between modal and ActiveSession ([55e5c12](https://github.com/antialias/soroban-abacus-flashcards/commit/55e5c121f1a0e8426f3965892b455a416671b434))
### Features
- **abacus:** add dockable abacus feature for practice sessions ([5fb4751](https://github.com/antialias/soroban-abacus-flashcards/commit/5fb4751728d8dd2cefbb1b1492abb3c14bef6e1b))
- **abacus:** add smooth animated transitions for dock/undock ([2c832c7](https://github.com/antialias/soroban-abacus-flashcards/commit/2c832c7944b28cc17a832d6852ab542fc78d3fc1))
- **bkt:** add adaptive-bkt mode with unified BKT architecture ([7085a4b](https://github.com/antialias/soroban-abacus-flashcards/commit/7085a4b3df5967d8f4a32b4ef10d8180894e4c36))
- **bkt:** implement adaptive skill targeting with validated convergence ([354ada5](https://github.com/antialias/soroban-abacus-flashcards/commit/354ada596dc95bb40fa8187e533b356e30cc6e58))
- **blog:** add Bayesian blame attribution validation and address reviewer feedback ([ceadd9d](https://github.com/antialias/soroban-abacus-flashcards/commit/ceadd9de67bce5c9f703a65a9de1ce7afaaeb4eb))
- **blog:** add interactive ECharts for BKT validation blog post ([6a4dd69](https://github.com/antialias/soroban-abacus-flashcards/commit/6a4dd694a2af809809d71d72d0effde4a865a240))
- **blog:** add layered skill trajectory visualization ([b227162](https://github.com/antialias/soroban-abacus-flashcards/commit/b227162da66859e2486ceef97020a2d0a451e988))
- **blog:** add session 0, line thickness, and category averages to charts ([c40baee](https://github.com/antialias/soroban-abacus-flashcards/commit/c40baee43fe6d18107988174a9d4da97e2fb390f))
- **blog:** show adaptive vs classic comparison on same chart ([b0c0f5c](https://github.com/antialias/soroban-abacus-flashcards/commit/b0c0f5c2dac2577ab4744f1cb1e712390b13cc9b))
- **blog:** simplify All Skills chart to show average comparison ([6ef329d](https://github.com/antialias/soroban-abacus-flashcards/commit/6ef329dd6020dfa9b80253ca2b8b71779685fb63))
- **practice:** add "Press paws!" pun to auto-pause phrases ([8405f64](https://github.com/antialias/soroban-abacus-flashcards/commit/8405f6448666df958a73b517e4fe9096aece9f17))
- **practice:** add /resume route for "Welcome back" experience ([7b476e8](https://github.com/antialias/soroban-abacus-flashcards/commit/7b476e80c1165ac6636c5dd80c48baae82e638eb))
- **practice:** add 30 and 45 minute session duration options ([e42766c](https://github.com/antialias/soroban-abacus-flashcards/commit/e42766c89375b277328bd2a4b22162dc3da0efb5))
- **practice:** add auto-pause and improve docked abacus sizing ([9c1fd85](https://github.com/antialias/soroban-abacus-flashcards/commit/9c1fd85ed588f95ad576a0df4d94cac588e3bc79))
- **practice:** add browse mode navigation and improve SpeedMeter timing display ([3c52e60](https://github.com/antialias/soroban-abacus-flashcards/commit/3c52e607b3e8a63219f1dde00c0448e52f672080))
- **practice:** add cascading regrouping skills and improve help UX ([7cf689c](https://github.com/antialias/soroban-abacus-flashcards/commit/7cf689c3d9315e9738937de191f8acfba56e1987))
- **practice:** add celebration progression banner with smooth transitions ([bb9506b](https://github.com/antialias/soroban-abacus-flashcards/commit/bb9506b93e57746be7139d5723326d54fb5752b1))
- **practice:** add complexity budget system and toggleable session parts ([5d61de4](https://github.com/antialias/soroban-abacus-flashcards/commit/5d61de4bf6273db41f080b86b059c817481f1cc9))
- **practice:** add inline practice panel for browse mode debugging ([c0764cc](https://github.com/antialias/soroban-abacus-flashcards/commit/c0764ccd8529d6ddaa19433876d57d96fa65b4fe))
- **practice:** add pause info with response time statistics to paused modal ([826c849](https://github.com/antialias/soroban-abacus-flashcards/commit/826c8490baf8c4b5f1032297d0f731cdf4fbdf4b))
- **practice:** add play emoji to Keep Going button ([80a33bc](https://github.com/antialias/soroban-abacus-flashcards/commit/80a33bcae2d96570f0a250595d02013fc2cd740e))
- **practice:** add prefix sum disambiguation and debug panel ([46ff5f5](https://github.com/antialias/soroban-abacus-flashcards/commit/46ff5f528a3749ee068902a9e9af90b76fd3bd0a))
- **practice:** add projecting SessionModeBanner with slot-based animation ([0f84ede](https://github.com/antialias/soroban-abacus-flashcards/commit/0f84edec0a986ff1ea77195e3aed22fc420c13b4))
- **practice:** add Remediation CTA for weak skill focus sessions ([7d8bb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/7d8bb2f525d3930b63accb2e32a53b16b68bc537))
- **practice:** add response time tracking and live timing display ([18ce1f4](https://github.com/antialias/soroban-abacus-flashcards/commit/18ce1f41af54083371b85e6c2771101bbd2d358f))
- **practice:** add SkillUnlockBanner + session summary improvements ([4daf7b7](https://github.com/antialias/soroban-abacus-flashcards/commit/4daf7b7433f0f11385bfa275ccf2a4283e30398d))
- **practice:** add student notes with animated modal + BKT improvements ([2702ec5](https://github.com/antialias/soroban-abacus-flashcards/commit/2702ec585fdd8c43a79d3b41e352baf35a9cd291))
- **practice:** add subtraction support to problem generator ([4f7a9d7](https://github.com/antialias/soroban-abacus-flashcards/commit/4f7a9d76cdfb550a0f517081d8c32a5cb3a7e0d1))
- **practice:** add unified SessionMode system for consistent skill targeting ([b345baf](https://github.com/antialias/soroban-abacus-flashcards/commit/b345baf3c465a745939e0ae159089978be776b14))
- **practice:** consolidate nav with transport dropdown and mood indicator ([8851be5](https://github.com/antialias/soroban-abacus-flashcards/commit/8851be594811df415cd5e2ee8320fcf49a7ea90a))
- **practice:** improve docked abacus UX and submit button behavior ([60fc81b](https://github.com/antialias/soroban-abacus-flashcards/commit/60fc81bc2d3310fa7c43b7582306f16b9efbae01))
- **practice:** improve help mode UX with crossfade and dismiss behaviors ([bcb1c7a](https://github.com/antialias/soroban-abacus-flashcards/commit/bcb1c7a1735c1b628871be10663e8f7ec5c9f699))
- **practice:** improve modal UI with problem counts and time estimation ([34d0232](https://github.com/antialias/soroban-abacus-flashcards/commit/34d0232451847360b8e3870a9772c901e1859fa6))
- **practice:** improve session summary UI ([a27fb0c](https://github.com/antialias/soroban-abacus-flashcards/commit/a27fb0c9a406fabe4b6c8cf3b5fd0b98cc66bf47))
- **practice:** inline emoji with random pause phrases ([c13fedd](https://github.com/antialias/soroban-abacus-flashcards/commit/c13feddfbb929457b817a551a070da47b1916482))
- **practice:** integrate timing display into sub-nav with mobile support ([2fca17a](https://github.com/antialias/soroban-abacus-flashcards/commit/2fca17a58bda55da53d0180d59c46448ff1a037a))
- **practice:** migrate mastery model to isPracticing + computed fluency ([b2e7268](https://github.com/antialias/soroban-abacus-flashcards/commit/b2e7268e7a9f09ffe0eca2fb2e5f4690c13963aa))
- **practice:** redesign paused modal with kid-friendly statistics UX ([11ecb38](https://github.com/antialias/soroban-abacus-flashcards/commit/11ecb385ad5ce693e1c65a40c74303835a62c37e))
- **practice:** reduce term count for visualization part ([9159608](https://github.com/antialias/soroban-abacus-flashcards/commit/9159608dcd78e9bf7e02363df52c37e61167cb31))
- **practice:** refactor disambiguation into state machine with comprehensive tests ([ed277ef](https://github.com/antialias/soroban-abacus-flashcards/commit/ed277ef74587db7b0484b9433695a2aaec480a80))
- **practice:** responsive mobile keypad and unified skill detection ([ee8dccd](https://github.com/antialias/soroban-abacus-flashcards/commit/ee8dccd83a92e12cce6dd79c02d3740c0122600b))
- **practice:** separate phrase sets for manual vs auto pause ([652519f](https://github.com/antialias/soroban-abacus-flashcards/commit/652519f2194a4ba69b8dbb7e64d2bf18a77e5ebe))
- **practice:** unify dashboard with session-aware progress display ([c40543a](https://github.com/antialias/soroban-abacus-flashcards/commit/c40543ac64d396cbdcb6684c5cb5e6c7e78483f9))
- **practice:** use student's actual mastered skills for problem generation ([245cc26](https://github.com/antialias/soroban-abacus-flashcards/commit/245cc269fe89e26f232eb116c4480ab34f3af24e))
- **session-planner:** integrate SessionMode for single source of truth targeting ([9851c01](https://github.com/antialias/soroban-abacus-flashcards/commit/9851c0102698c5386902e891488f2568ecdc1630))
- **skills-modal:** add spring animations and UX improvements ([b94f533](https://github.com/antialias/soroban-abacus-flashcards/commit/b94f5338e547632d8a3c24a2b7c3c2c67deee7f6))
- **skills:** add Skills Dashboard with honest skill assessment framing ([bf4334b](https://github.com/antialias/soroban-abacus-flashcards/commit/bf4334b281b4b0dd2762d27b3814db6dd8b970a1))
- **test:** add journey simulator for BKT A/B testing ([86cd518](https://github.com/antialias/soroban-abacus-flashcards/commit/86cd518c39738b07d418d06c599e3fe215bad793))
- **tutorial:** implement subtraction in unified step generator ([e5c697b](https://github.com/antialias/soroban-abacus-flashcards/commit/e5c697b7a81c8b82a280a1b084d95f223e22b511))
# [2.15.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.14.0...abacus-react-v2.15.0) (2025-12-08)
### Bug Fixes
- **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903))
- account for SVG preserveAspectRatio in coordinate transforms ([e4e0925](https://github.com/antialias/soroban-abacus-flashcards/commit/e4e09256c2ad6dd72ca620af017a5d893671264e))
- add 'auto' to RuleMode type to prevent undefined display values ([a8636ca](https://github.com/antialias/soroban-abacus-flashcards/commit/a8636ca6a2d06d31780d71ec67e35176b3dd3259))
- add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea))
- add cooldown after quick-escape to prevent precision mode re-activation ([e885ae7](https://github.com/antialias/soroban-abacus-flashcards/commit/e885ae7ef45430b2c3511c22ad0e418a09a178c5))
- add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45))
- add custom cursor when pointer lock is active ([5d6d6b4](https://github.com/antialias/soroban-abacus-flashcards/commit/5d6d6b4ddc5bc66c05ec433cd6daadb2692286f0))
- add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8))
- add missing scaleX and scaleY number conversions ([ae6cc5e](https://github.com/antialias/soroban-abacus-flashcards/commit/ae6cc5e3268654ff1d44f340413c7deea5c939c4))
- add missing selectedContinent to default config and fix ts-expect-error directives ([07e9224](https://github.com/antialias/soroban-abacus-flashcards/commit/07e92240e8eb1c9c2bcda5f9b7ba0e13f523b412))
- add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343))
- add quotes around unquoted keys when parsing customCrops.ts ([0add49c](https://github.com/antialias/soroban-abacus-flashcards/commit/0add49c5999d51ffb27ef5b18a3418a94bae8c40))
- add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14))
- add shuffling to progressive difficulty mode & UI improvements ([38e9982](https://github.com/antialias/soroban-abacus-flashcards/commit/38e9982c3dc65f6b7054b563c97e481ba5aa77d2))
- add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f))
- align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3))
- calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b))
- cancel previous give-up animation when new give-up starts ([c01cb7f](https://github.com/antialias/soroban-abacus-flashcards/commit/c01cb7f3840d4a70e607aeb9a74d6dd7db9804cb))
- cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351))
- center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903))
- change zoom capping to create pause effect instead of slow easing ([f2ca9d1](https://github.com/antialias/soroban-abacus-flashcards/commit/f2ca9d1ebe418007bcc5bc9953c502e5dc053139))
- combine fast easing with smooth precision mode transition ([cab1fbf](https://github.com/antialias/soroban-abacus-flashcards/commit/cab1fbff955ceb41df1482d96b94a42acd979d1a))
- configure Next.js to transpile [@svg-maps](https://github.com/svg-maps) ES modules ([ebf2b66](https://github.com/antialias/soroban-abacus-flashcards/commit/ebf2b66910b9265976763e7cf211de383850c84f))
- consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef))
- correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2))
- **create:** use inline styles for dynamic gradient backgrounds ([ed25b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ed25b323e8925ef4864a0a716f464cd3488dd9ae))
- DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db))
- don't show labels for excluded/filtered regions ([a83fbb1](https://github.com/antialias/soroban-abacus-flashcards/commit/a83fbb10702640c56add16ce745c598f0bf81960))
- eagerly load map caches in browser and use Suspense pattern ([db6be73](https://github.com/antialias/soroban-abacus-flashcards/commit/db6be73a1cdc4eb1bbf0fea11ad3a02ed8e678e8))
- eliminate cursor dampening lag when changing direction ([fc08b77](https://github.com/antialias/soroban-abacus-flashcards/commit/fc08b775db72f5cd8ed360e7707a62505c94074b))
- enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c))
- enable vertical scrolling in layout controls ([a1b31f4](https://github.com/antialias/soroban-abacus-flashcards/commit/a1b31f454a698b6ab4a43f985f6df4d36d92ecf1))
- enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7))
- ensure entire region path is clickable with pointerEvents: all ([eb94191](https://github.com/antialias/soroban-abacus-flashcards/commit/eb94191b2e436081872a9f5998bdfc9d0d4695fe))
- export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90))
- hide abacus on /arcade and /arcade-rooms routes ([77033f0](https://github.com/antialias/soroban-abacus-flashcards/commit/77033f0b22692180ce806c2f6777f4f493ad240c))
- implement manual click detection using precise cursor position ([156f63f](https://github.com/antialias/soroban-abacus-flashcards/commit/156f63faaf86e26bb2fd6c7b5bc8df66769742ba))
- improve dark mode contrast in OrientationPanel dropdown ([f9e2343](https://github.com/antialias/soroban-abacus-flashcards/commit/f9e2343ffbf5694c0b9e2f2f108d86a40f2a756f))
- improve dark mode for orientation and page buttons ([fe9b9f9](https://github.com/antialias/soroban-abacus-flashcards/commit/fe9b9f9ffacc992ee654364fdf63eebbba0e9aa7))
- improve draggable button constraints to avoid action button overlap ([00b0fb2](https://github.com/antialias/soroban-abacus-flashcards/commit/00b0fb297bf7bc72648ee672f6ce6f0c4cadd28f))
- improve magnifier zoom calculation for multi-piece regions ([cb4114f](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4114f34458d53c090f59dc0da4aa63a9368610))
- improve magnifier zoom smoothness and debug panel ([639e662](https://github.com/antialias/soroban-abacus-flashcards/commit/639e662d762120f27b07a0c6c68b72d2709f3282))
- improve socket server error messages for better debugging ([5d1ea7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5d1ea7db2d66b5330ca83bf9a67b480088b3b672))
- improve text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f))
- improve zoom easing to threshold by deferring capping ([b355a3f](https://github.com/antialias/soroban-abacus-flashcards/commit/b355a3fc8fda1d396352566139e9335b35c8a4e8))
- increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3))
- increase super zoom multiplier from 2.5x to 5.0x for Gibraltar ([138e6c0](https://github.com/antialias/soroban-abacus-flashcards/commit/138e6c071be6d544470cb075de5f825d881db341))
- increase z-index of pointer lock prompt overlay ([5388441](https://github.com/antialias/soroban-abacus-flashcards/commit/5388441ebb95634663d3f3f1afc10f9d72cb9e03))
- **know-your-world:** actually change magnifier element dimensions to 1/3 ([31a06d6](https://github.com/antialias/soroban-abacus-flashcards/commit/31a06d6fef0612fa462906630fd731d24e7bdb0b))
- **know-your-world:** allow space in name confirmation input ([285b128](https://github.com/antialias/soroban-abacus-flashcards/commit/285b128bb8ffc0aedfb8450948befd9688e0521a))
- **know-your-world:** center setup settings panel horizontally ([5f69fab](https://github.com/antialias/soroban-abacus-flashcards/commit/5f69fab8595e06943fde2ebfb4ae03871fceee10))
- **know-your-world:** correctly identify local player for cursor sharing ([7aafe8c](https://github.com/antialias/soroban-abacus-flashcards/commit/7aafe8c92e0b73bd72d43a42a6596b91934c92c2))
- **know-your-world:** enable hot/cold only for current player in turn mode ([f5ce53e](https://github.com/antialias/soroban-abacus-flashcards/commit/f5ce53efc057fcc2bed09a39b264c54170f651b8))
- **know-your-world:** fix celebration timer restart and mobile magnifier dismissal bugs ([0558132](https://github.com/antialias/soroban-abacus-flashcards/commit/055813205a680e4204329861589637ea28160d23))
- **know-your-world:** fix hot/cold visual feedback delay ([a6352ec](https://github.com/antialias/soroban-abacus-flashcards/commit/a6352ec6240abfe7bfb975ef5c28ab5cb805e837))
- **know-your-world:** fix pointer lock escape for all edges and add smooth release animation ([a7fa858](https://github.com/antialias/soroban-abacus-flashcards/commit/a7fa858a29faf3d5f7e7d8a6d18ea96c6b7908ec))
- **know-your-world:** fix server/client filter mismatch for USA map ([98e74ba](https://github.com/antialias/soroban-abacus-flashcards/commit/98e74bae3a0eccd8be81e547b030c3ce739f7b82))
- **know-your-world:** fix TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9))
- **know-your-world:** guard against undefined state during session init ([ea8965b](https://github.com/antialias/soroban-abacus-flashcards/commit/ea8965bc95379d005b4e2dc1b9ae3716dd24b065))
- **know-your-world:** improve crosshair UX and fix mobile Select button ([0584863](https://github.com/antialias/soroban-abacus-flashcards/commit/0584863bdd4b17316c264e46ca4309b2dd74546e))
- **know-your-world:** improve mobile layout for setup screen ([81b44a6](https://github.com/antialias/soroban-abacus-flashcards/commit/81b44a6422848d949ff8c3b082cff12c373b12cb))
- **know-your-world:** improve mobile magnifier positioning and sizing ([9a254e2](https://github.com/antialias/soroban-abacus-flashcards/commit/9a254e29331dadc990f31cdc182482b5b5da8141))
- **know-your-world:** improve mobile magnifier touch controls ([aee5f21](https://github.com/antialias/soroban-abacus-flashcards/commit/aee5f21ecc8982115e0012c59011dd8b342d5ca1))
- **know-your-world:** make game settings visible in right panel ([11d2d56](https://github.com/antialias/soroban-abacus-flashcards/commit/11d2d5693c8e72d07750ea54b1e33158431912b5))
- **know-your-world:** move Start button to top-right settings panel ([cc51de3](https://github.com/antialias/soroban-abacus-flashcards/commit/cc51de35e397641f5c0f4a054ea350cd5d255cd7))
- **know-your-world:** normalize accented letters for keyboard input ([b27856e](https://github.com/antialias/soroban-abacus-flashcards/commit/b27856e9fc4f339f50c148b6f0adbdb3c0b93140))
- **know-your-world:** prevent hint bubble closing when toggling settings ([a67c11a](https://github.com/antialias/soroban-abacus-flashcards/commit/a67c11ae045bcbf17861d9475dc824cb97652f8d))
- **know-your-world:** raise auto-zoom thresholds for tiny regions ([17c113e](https://github.com/antialias/soroban-abacus-flashcards/commit/17c113e68b26d41d0bdd025e64dcbfcee0836f3e))
- **know-your-world:** reduce magnifier size to 1/3 of pane dimensions ([61a438d](https://github.com/antialias/soroban-abacus-flashcards/commit/61a438dd31161313aeeb99573084ff8372cc875b))
- **know-your-world:** remove confidence gate from hot/cold visual emoji ([7f6b9dd](https://github.com/antialias/soroban-abacus-flashcards/commit/7f6b9dd558902e7c19c9b4ce4c0590be4ecfe4e4))
- **know-your-world:** remove hovered region label from setup screen ([5bb2288](https://github.com/antialias/soroban-abacus-flashcards/commit/5bb228883d5c05e23c11762c35ad6bdad45d1d46))
- **know-your-world:** Remove redundant preventDefault calls in touch handlers ([021a75f](https://github.com/antialias/soroban-abacus-flashcards/commit/021a75f583c779861323f51a1a3f5bb2933cbf62))
- **know-your-world:** remove tips section from setup screen ([c9e9190](https://github.com/antialias/soroban-abacus-flashcards/commit/c9e91909378756954aa0000b963da8dbe1eb29cd))
- **know-your-world:** replace react-spring with CSS animation for crosshair rotation ([af5e7b5](https://github.com/antialias/soroban-abacus-flashcards/commit/af5e7b59dcc6a7469968f0be51badb7e3753fbc0))
- **know-your-world:** restore no-music celebration sounds ([f6d1295](https://github.com/antialias/soroban-abacus-flashcards/commit/f6d1295c6f903933e40b15c75b4373049a8a0421))
- **know-your-world:** restore Start button character ([7013a7b](https://github.com/antialias/soroban-abacus-flashcards/commit/7013a7b0683d9187f12a07814534a89aca176363))
- **know-your-world:** stabilize mobile magnifier 1:1 touch tracking ([ab30add](https://github.com/antialias/soroban-abacus-flashcards/commit/ab30adda25a0f129ee93071c8df5af7ce8efa5cf))
- **know-your-world:** suppress hot/cold hints during takeover and give-up ([9f6b425](https://github.com/antialias/soroban-abacus-flashcards/commit/9f6b425daf47b6c62c9c6fed8dc87d95943dc0af))
- **know-your-world:** use getBBox() for consistent takeover positioning ([f8acc4a](https://github.com/antialias/soroban-abacus-flashcards/commit/f8acc4aa6aeac44d7c0e99db257e49484d87e633))
- **know-your-world:** use localPlayerId for cursor updates in all modes ([5e8c37b](https://github.com/antialias/soroban-abacus-flashcards/commit/5e8c37b68ed6031f030b1429f76b6b456df4bd88))
- **know-your-world:** use shared MAX_ZOOM constant for mobile magnifier ([e4c35e9](https://github.com/antialias/soroban-abacus-flashcards/commit/e4c35e94250067ead48dc97405355fcbacaa7838))
- **know-your-world:** use spring-for-speed pattern for smooth crosshair rotation ([b7fe2af](https://github.com/antialias/soroban-abacus-flashcards/commit/b7fe2af3696c052c55f712b3d19777903a061c58))
- **know-your-world:** use viewport-based maxHeight for right panel ([a4f9db6](https://github.com/antialias/soroban-abacus-flashcards/commit/a4f9db6d3f62d8ebb808eced8b0ea3a8ba1fa342))
- lazy-load map data in know-your-world validator ([07c25a2](https://github.com/antialias/soroban-abacus-flashcards/commit/07c25a2296dde620bb73e5f37c500f72625eb9f9))
- lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](https://github.com/antialias/soroban-abacus-flashcards/commit/97b214da12bdb782a56bbb388d6f31c0e97e9c82))
- make map-renderer fill parent container for fit-crop-with-fill ([18b1476](https://github.com/antialias/soroban-abacus-flashcards/commit/18b14766b23071016c7e3c5629621e378237756c))
- make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5))
- make useArcadeSocket work without ArcadeErrorProvider ([01740af](https://github.com/antialias/soroban-abacus-flashcards/commit/01740afcb7c426c721544f8034ad821558609a79))
- merge duplicate style attributes on magnifier SVG ([3eda493](https://github.com/antialias/soroban-abacus-flashcards/commit/3eda493051965772056bcfc2bc8c14176d4efd3b))
- move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72))
- page indicator not tracking scroll when showing all pages ([3d157e3](https://github.com/antialias/soroban-abacus-flashcards/commit/3d157e32edae1a5655a14d943a02d8752935aaa8))
- page indicator stuck on page 1 due to stale closure ([952ebc7](https://github.com/antialias/soroban-abacus-flashcards/commit/952ebc7756273900c60d714f0ef1da07af99e7d1))
- pass correct parameter for borrow boxes in subtraction ([00d892a](https://github.com/antialias/soroban-abacus-flashcards/commit/00d892a05c6644d2f00eb54a88ab9b01d2d05c6f))
- position debug panel opposite from magnifier ([aa80a73](https://github.com/antialias/soroban-abacus-flashcards/commit/aa80a7366499ea1e3e954368fd335d0f9a5a6919))
- position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee))
- **practice:** add 80px top padding to account for app nav height ([a50b268](https://github.com/antialias/soroban-abacus-flashcards/commit/a50b268d354cf5e0778736c67e28fa2c4be05fce))
- **practice:** allow vertical overflow for help overlays ([1ddf9fc](https://github.com/antialias/soroban-abacus-flashcards/commit/1ddf9fc94f9b45f0791b2e987f39db6abd8c82a8))
- **practice:** prevent decomposition math from wrapping ([52ea3f1](https://github.com/antialias/soroban-abacus-flashcards/commit/52ea3f10fa9140daa8b46196feeab51628a4f010))
- **practice:** remove overflow clipping to allow help overlays ([e9b123a](https://github.com/antialias/soroban-abacus-flashcards/commit/e9b123a7b3df66655e86f76734621c0f99a6e9b3))
- **practice:** remove redundant 'already at target' message ([e9ccfb9](https://github.com/antialias/soroban-abacus-flashcards/commit/e9ccfb918618f5ad2b7bad9254390d02c48c36c3))
- **practice:** use explicit padding to prevent shorthand override ([4c00d92](https://github.com/antialias/soroban-abacus-flashcards/commit/4c00d92ccb6cd73d1572810f4ea990e08d66addd))
- preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548))
- preserve seed and prngAlgorithm in config migrations ([b18c412](https://github.com/antialias/soroban-abacus-flashcards/commit/b18c4127361339893b2b700668c135ceeb53e4d2))
- preserve user's scaffolding settings when changing skills ([1eb04ce](https://github.com/antialias/soroban-abacus-flashcards/commit/1eb04ce0c46e7ec745b8cc8c8580b3ff731916a1))
- prevent duplicate API calls in React StrictMode ([0d59676](https://github.com/antialias/soroban-abacus-flashcards/commit/0d59676b38511038d12521a2c3658f3253238501))
- prevent modal closure when clicking tabs in AllSkillsModal ([4746e1f](https://github.com/antialias/soroban-abacus-flashcards/commit/4746e1f8fe41d4766d0bcb453c26e1395e593b27))
- prevent regrouping problems in no-regrouping skills and enable progressive difficulty toggle ([59712e1](https://github.com/antialias/soroban-abacus-flashcards/commit/59712e1021c41826f940fe506c7781679b46b6a1))
- prevent skill name wrapping in mini cards with single-line ellipsis ([a463d08](https://github.com/antialias/soroban-abacus-flashcards/commit/a463d088d763ffc9708e8a7d2a94369b1cc6d414))
- prevent zoom jump on precision mode activation by resetting spring target ([33d9f15](https://github.com/antialias/soroban-abacus-flashcards/commit/33d9f15897cdc75e2fa2001430d75c23c6b282a4))
- prevent zoom jump when activating precision mode ([9cb3c89](https://github.com/antialias/soroban-abacus-flashcards/commit/9cb3c898ec3493c9a59b9beb6893daa359dd63cd))
- properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748))
- properly cycle through problem sets when exceeding unique problem space ([55d4920](https://github.com/antialias/soroban-abacus-flashcards/commit/55d49201678fa8ad7f8e7530b13461e5984838c6))
- properly zoom to selected continent in game phases ([e900e44](https://github.com/antialias/soroban-abacus-flashcards/commit/e900e4465bbde8d8b0787581d6e8603fdf36975f))
- reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8))
- refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28))
- regenerate lockfile to remove big.js dependencies ([05fc5cf](https://github.com/antialias/soroban-abacus-flashcards/commit/05fc5cfe4952115307930eff2d9ceac14c35fb6f))
- remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740))
- remove background rect from main map SVG ([7d3c5c3](https://github.com/antialias/soroban-abacus-flashcards/commit/7d3c5c304b61f3fbc64d626b0712c74e895af9c9))
- remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99))
- remove magnifierSpring.zoom from effect dependencies ([5eb2eed](https://github.com/antialias/soroban-abacus-flashcards/commit/5eb2eeda32ff95ccc45707acfbc329e2214ed3e1))
- remove mispositioned background rect from magnifier SVG ([5815cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/5815cbee15bc1207eba0ad30d93db9dbc4735b6b))
- remove pages from visible set when they leave viewport ([9757449](https://github.com/antialias/soroban-abacus-flashcards/commit/9757449e21d31b4ce17baa5305b09506f4a54cf4))
- remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75))
- remove regex lookbehind for Safari compatibility ([4d77f1f](https://github.com/antialias/soroban-abacus-flashcards/commit/4d77f1ffd3c54ba76d95618f5fe4444e0972c4d5))
- remove unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42))
- replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7))
- replace ES module imports with JSON data files ([fb735be](https://github.com/antialias/soroban-abacus-flashcards/commit/fb735be014d8fa625fd07d8afdffd0f561acb50d))
- resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff))
- respect borrow boxes display setting regardless of actual borrowing ([1aef0f2](https://github.com/antialias/soroban-abacus-flashcards/commit/1aef0f292fd20bbef0a7d284d1ab0060947626e2))
- respect operator-specific scaffolding in mastery+mixed mode ([a6472a2](https://github.com/antialias/soroban-abacus-flashcards/commit/a6472a231be65e9e3e27e5d05a2323ae8451b044))
- respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a))
- responsive page indicator and settings summary improvements ([93ddc28](https://github.com/antialias/soroban-abacus-flashcards/commit/93ddc28a3af4d66a6b8412b86472cfd4d04912c2))
- resume zoom animation immediately when precision mode activates ([7ba7e03](https://github.com/antialias/soroban-abacus-flashcards/commit/7ba7e036613876d776eaf4822317a8bad2788495))
- resume zoom animation immediately when precision mode activates ([7c1f2e5](https://github.com/antialias/soroban-abacus-flashcards/commit/7c1f2e54c9331b55b14e22edbf11897deb8780b8))
- resume zoom animation when target drops below threshold ([e73b59d](https://github.com/antialias/soroban-abacus-flashcards/commit/e73b59d510863338181338a3d2439a414a2ec15a))
- scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1))
- **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d))
- show hot/cold button on iPad with mouse attached ([1333818](https://github.com/antialias/soroban-abacus-flashcards/commit/1333818baea76360788b3c30993ab1b54e437e97))
- skip pointer lock request on unsupported devices (iPad) ([d6eb997](https://github.com/antialias/soroban-abacus-flashcards/commit/d6eb9974459efd9d72694a65803d7f8253a48012))
- stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a))
- take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7))
- track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01))
- transform screen coordinates to SVG space for isPointInFill() ([4c933be](https://github.com/antialias/soroban-abacus-flashcards/commit/4c933be48a9a92d479aa86afeea0d1ff761aba88))
- transmit hovered region ID with network cursor to avoid hit-testing discrepancies ([6c3f860](https://github.com/antialias/soroban-abacus-flashcards/commit/6c3f860efc503977a53088cd038ec284727463b7))
- **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c))
- update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8))
- update operator-specific display rules in mastery+mixed mode ([4174b6d](https://github.com/antialias/soroban-abacus-flashcards/commit/4174b6d2e7ad00cfd3cdc887345551047fb7f114))
- upgrade to Node.js 20 to resolve ES module import issues ([192de5c](https://github.com/antialias/soroban-abacus-flashcards/commit/192de5c6b54e5eb694b2b3aba0cf61f64a68f55b))
- use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477))
- use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b))
- use animated spring for magnifier label positioning ([94d1cdf](https://github.com/antialias/soroban-abacus-flashcards/commit/94d1cdfcb5469c58ba196fc11ae6226f0e2d0147))
- use ASCII characters for operator icons to support dark mode ([3bd5c00](https://github.com/antialias/soroban-abacus-flashcards/commit/3bd5c00d212e838abb709e2359ff103dbce97552))
- use correct Unicode minus sign () for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57))
- use dynamic ES module imports for [@svg-maps](https://github.com/svg-maps) packages in know-your-world ([ab94fd3](https://github.com/antialias/soroban-abacus-flashcards/commit/ab94fd350fd5b9f6a231f629975d99eedc00d11a))
- use LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf))
- use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb))
- use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d))
- use SVG viewBox units instead of screen pixels for zoom ([0dcaabb](https://github.com/antialias/soroban-abacus-flashcards/commit/0dcaabb8a5a7175e511affc2f15196784aeec05a))
- use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6))
- **worksheets:** add backward compatibility for displayRules in SmartModeControls ([b956e2d](https://github.com/antialias/soroban-abacus-flashcards/commit/b956e2d6057d0a6427624f7b690e4a29218ac3f6))
- **worksheets:** add borrowNotation and borrowingHints to DisplayRules interfaces ([3b908ac](https://github.com/antialias/soroban-abacus-flashcards/commit/3b908ac453df885f5dc7decd134bb603fcb0444e))
- **worksheets:** add borrowNotation and borrowingHints to validation fallback ([3f700af](https://github.com/antialias/soroban-abacus-flashcards/commit/3f700af6432735aaab4387aabcc2fc302921869d))
- **worksheets:** add mastery mode to Zod schema validation ([003f1d1](https://github.com/antialias/soroban-abacus-flashcards/commit/003f1d11cc0a6e6dc77c7f9b5ab36936f842778e))
- **worksheets:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4))
- **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255))
- **worksheets:** prevent infinite loop when problem space is empty ([02463df](https://github.com/antialias/soroban-abacus-flashcards/commit/02463df8e505a2cd14d96f6a9301df80356c6818))
- **worksheets:** render operators last for proper layering ([cdd0de7](https://github.com/antialias/soroban-abacus-flashcards/commit/cdd0de797f9d712e10f54a314671ce5277c957ad))
- **worksheets:** sync preview and download problem generation ([822ef78](https://github.com/antialias/soroban-abacus-flashcards/commit/822ef78e5880de93e2b82952a39630539609e306))
- **worksheets:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2))
- **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28))
### Features
- **abacus-react:** add defaultValue prop for uncontrolled mode ([3ce12c5](https://github.com/antialias/soroban-abacus-flashcards/commit/3ce12c59fc3f8306bb21b19876e6a820e6ddedda))
- add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2))
- add adaptive zoom magnifier for Know Your World map ([1e8846c](https://github.com/antialias/soroban-abacus-flashcards/commit/1e8846cdb1de8e557f2ef53eff6014995911f3ce))
- add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4))
- add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e))
- add auto-submit on correct answer + Newton poem blog post ([2f7cb03](https://github.com/antialias/soroban-abacus-flashcards/commit/2f7cb03c3f463d9c350c9d55200b34fd737bc5b0))
- add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99))
- add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977))
- add custom error boundaries with navigation ([73cc418](https://github.com/antialias/soroban-abacus-flashcards/commit/73cc4185c3fb9fd43fe51f6a47ac7d056590eeb4))
- add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0))
- add debug bounding boxes to magnifier view ([9c7d2fa](https://github.com/antialias/soroban-abacus-flashcards/commit/9c7d2fab5f04a11dc97f6f5db63b91c153aec98d))
- add debug indicator for custom crop region (dev only) ([9c89aad](https://github.com/antialias/soroban-abacus-flashcards/commit/9c89aadb17516fb540304813da73a649d5dfb96c))
- add detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a))
- add dev-only crop tool for custom map region cropping ([855e5df](https://github.com/antialias/soroban-abacus-flashcards/commit/855e5df2c0dfadc1542b4be25987af4cfe30c735))
- add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64))
- add dynamic layout preview component for orientation selection ([8df62d6](https://github.com/antialias/soroban-abacus-flashcards/commit/8df62d6a45b0dc556702b867522e8710307ff733))
- add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715))
- add exponential zoom scaling for sub-pixel regions ([101213b](https://github.com/antialias/soroban-abacus-flashcards/commit/101213ba1c2b378aa63e828f40cdefd698934c1a))
- add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3))
- add give up with zoom animation for Know Your World ([94cff43](https://github.com/antialias/soroban-abacus-flashcards/commit/94cff4374f4b9060339dbb1067fed58009e2dcf9))
- add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c))
- add interactive world map continent selector ([245005c](https://github.com/antialias/soroban-abacus-flashcards/commit/245005c8ece0626136769e5e9fd1961a0db45709))
- add Know Your World geography quiz game ([25e24a7](https://github.com/antialias/soroban-abacus-flashcards/commit/25e24a7cbc0b1803d464e987400d0aad1d3ef8cd))
- add mobile drawer and detailed summary for shared worksheets ([0a35e70](https://github.com/antialias/soroban-abacus-flashcards/commit/0a35e70e2828c43d57d8d95b592d38a48e1fbf08))
- add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298))
- add per-country coloring and individual region clicks to continent selector ([2e9f409](https://github.com/antialias/soroban-abacus-flashcards/commit/2e9f409f26e12f833301954ec39fe7db39715e26))
- add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a))
- add Pointer Lock API for precision mode to prevent edge issues ([4d5953d](https://github.com/antialias/soroban-abacus-flashcards/commit/4d5953d03403adcb8bc964437ba5b819dbaa7696))
- add precision controls for tiny regions in Know Your World ([3bf127f](https://github.com/antialias/soroban-abacus-flashcards/commit/3bf127f344c631f5bed3504228b140407a734c06))
- add precision mode system with pixel grid visualization ([53e9041](https://github.com/antialias/soroban-abacus-flashcards/commit/53e90414a34f3f719502bc8c8ca2bb7358f8469c))
- add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5))
- add problem space validation to warn about duplicate risk ([0b8c180](https://github.com/antialias/soroban-abacus-flashcards/commit/0b8c1803ffe0392f71d10cddb945ae24a39022e0))
- add responsive mobile drawer with draggable settings button ([fc1d7fc](https://github.com/antialias/soroban-abacus-flashcards/commit/fc1d7fcbd60b22f25f817dd7d24a5ad0c33eb63a))
- add responsive page button layout with dynamic dropdown ([3f33cd1](https://github.com/antialias/soroban-abacus-flashcards/commit/3f33cd1924deffee0f215e6a463016e76784f77c))
- add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7))
- add single-page worksheet preview API endpoint ([10e97db](https://github.com/antialias/soroban-abacus-flashcards/commit/10e97db78a25c83f1bda46abaae6ad45cff712f1))
- add skill configuration system with interactive 2D difficulty plot ([7fbc743](https://github.com/antialias/soroban-abacus-flashcards/commit/7fbc743c4c213866a36e758eaf9b49200ea79f13)), closes [#9333](https://github.com/antialias/soroban-abacus-flashcards/issues/9333) [#10b981](https://github.com/antialias/soroban-abacus-flashcards/issues/10b981)
- add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab))
- add split-action share button with copy shortcut ([085d200](https://github.com/antialias/soroban-abacus-flashcards/commit/085d200da4d726148a027181b10707d77e88af7a))
- add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88))
- add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6))
- add visual debugging for zoom importance scoring ([e60a2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/e60a2c09c0e843af9a5a82433493ccf499660981))
- add visual grab tab to resize handle with rounded corners ([6e55d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/6e55d5add7cc916e5caaeb49927ecef38ef5bbf9))
- add visual warnings to page selector buttons ([5a87799](https://github.com/antialias/soroban-abacus-flashcards/commit/5a8779969c17c948a822cc1ecb636f770bb6d9e3))
- add worksheet generation core logic and helpers ([163517d](https://github.com/antialias/soroban-abacus-flashcards/commit/163517db7d9f0818c0034d6c20908d3fac5ab815))
- add worksheet sharing infrastructure with database persistence ([7b4c7c3](https://github.com/antialias/soroban-abacus-flashcards/commit/7b4c7c3fb62310e892792220f76c750bcee3cf05))
- add worksheet studio with comprehensive features ([d5672bd](https://github.com/antialias/soroban-abacus-flashcards/commit/d5672bdddf9ad557eaa76ad8d7e9e1ce1cb7ee30))
- apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0))
- **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514))
- calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29))
- convert operator selection to checkboxes with required validation ([c997c4a](https://github.com/antialias/soroban-abacus-flashcards/commit/c997c4a7ba81faf5c8970963b692f4e31bacfa7e))
- create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071))
- enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d))
- enhance scaffolding tab with live preview and resolved display rules ([9a5a0d4](https://github.com/antialias/soroban-abacus-flashcards/commit/9a5a0d4e3c3b9f209f83856b62283df04859833a))
- **help-system:** add focus areas for skills needing reinforcement ([871390d](https://github.com/antialias/soroban-abacus-flashcards/commit/871390d8e1b55ab78e7cc537e9127a336ee5f462))
- **help-system:** add schema for progressive help and feedback loop ([41c4603](https://github.com/antialias/soroban-abacus-flashcards/commit/41c46038d8c1b69254206b14d76d420f41f4d248))
- **help-system:** add usePracticeHelp hook and skill extraction ([0b1ad1f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b1ad1f896e81357fa1cccec4b2d5a606d777321))
- **help-system:** integrate PracticeHelpPanel into ActiveSession ([373ec34](https://github.com/antialias/soroban-abacus-flashcards/commit/373ec34e4649130c368c4ce193c8066c56be9744))
- hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50))
- implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3))
- implement fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1))
- implement lazy loading for worksheet preview with cursor pagination ([8b3d019](https://github.com/antialias/soroban-abacus-flashcards/commit/8b3d0196523ec9fdf2b9a6bbee8c54c8493a49db))
- implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c))
- improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d))
- improve tab navigation layout and add pages to layout button ([926a029](https://github.com/antialias/soroban-abacus-flashcards/commit/926a029ff82503179912e1cec17bf6458396f127))
- improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1))
- increase max super zoom to 120x for ultra-tiny regions ([9b782be](https://github.com/antialias/soroban-abacus-flashcards/commit/9b782beabf2a9fc34b55c396164ab410930890db))
- increase max zoom to 1000x with detailed debug logging ([a6be05f](https://github.com/antialias/soroban-abacus-flashcards/commit/a6be05f8c1167d1175ef7d7b1d0e239afaebbf9b))
- **know-your-world:** add 'H' keyboard shortcut for hint ([cdc9451](https://github.com/antialias/soroban-abacus-flashcards/commit/cdc94514d9f6eb1865bd0b64c17f5e57affb0a5b))
- **know-your-world:** add adaptive hint cycling for struggling users ([5440250](https://github.com/antialias/soroban-abacus-flashcards/commit/54402501e594f802b27bbccd724e5f5262bdebd1))
- **know-your-world:** add celebration animations for found regions ([3b9d6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/3b9d6b0fdf17518cfe6325105bdd9f7996185344))
- **know-your-world:** add device capability hooks and improve mobile support ([c502a4f](https://github.com/antialias/soroban-abacus-flashcards/commit/c502a4fa926b92d2a16d8e31e7e55243752d80d8))
- **know-your-world:** add drill-down map selector and improve setup UI ([a6f8dbe](https://github.com/antialias/soroban-abacus-flashcards/commit/a6f8dbe474fd909a48183905cafc9ccb8f1ccfa7))
- **know-your-world:** add filter tabs for size, importance, and population ([6c3c0ac](https://github.com/antialias/soroban-abacus-flashcards/commit/6c3c0ac70e58fa4fa678508d1ea37a163a2d875d))
- **know-your-world:** add fire tracer animation for learning mode takeover ([1e6153e](https://github.com/antialias/soroban-abacus-flashcards/commit/1e6153ee8bb53469aec515a20e2cf14450e9d67a))
- **know-your-world:** add hint system, pointer lock buttons, and mobile magnifier support ([55e480c](https://github.com/antialias/soroban-abacus-flashcards/commit/55e480c03b710a9c244ef5c6b3372b9adb78637c))
- **know-your-world:** add hints for Europe and Africa regions ([46e5c6b](https://github.com/antialias/soroban-abacus-flashcards/commit/46e5c6b99bce5a07ddf050aed56cf470f8610e89))
- **know-your-world:** add hot/cold audio feedback for cursor proximity ([69813e9](https://github.com/antialias/soroban-abacus-flashcards/commit/69813e92a256f3c78920929eab419accfc4abcd3))
- **know-your-world:** add hot/cold debug panel and production debug mode ([493313a](https://github.com/antialias/soroban-abacus-flashcards/commit/493313a3bb47d145ad437143834d71ea6dcf6341))
- **know-your-world:** add hot/cold feedback for mobile magnifier ([824325b](https://github.com/antialias/soroban-abacus-flashcards/commit/824325b843c7356b3b7d14ee105fe66edd04cd1f))
- **know-your-world:** add interaction state machine foundation ([e4d6748](https://github.com/antialias/soroban-abacus-flashcards/commit/e4d6748d70c9d6c6cf705f95183713611f57e871))
- **know-your-world:** add Learning mode and fix hints before name unlock ([fc87808](https://github.com/antialias/soroban-abacus-flashcards/commit/fc87808b40578054f0196a5d68ab35f56d375585))
- **know-your-world:** add learning mode takeover animation and fix give-up sequence ([3fd8472](https://github.com/antialias/soroban-abacus-flashcards/commit/3fd8472e6832fa16dd83b9ae1ed7b8b92baa5f04))
- **know-your-world:** add map zoom preview, remove study time feature ([57dd61b](https://github.com/antialias/soroban-abacus-flashcards/commit/57dd61b99461ff36983231faa9e105f4b22215ec))
- **know-your-world:** add missing island hints and revise all hints ([8b13b5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8b13b5a455cee09dcf6938e04facab7f674f2cb8))
- **know-your-world:** add mobile cursor sharing and fix multi-device coop mode ([2ce5e18](https://github.com/antialias/soroban-abacus-flashcards/commit/2ce5e180b763434efa495af252f39e47d9723ebf))
- **know-your-world:** add mobile virtual keyboard and space-skipping ([5318d0d](https://github.com/antialias/soroban-abacus-flashcards/commit/5318d0dd8903b2fad9d9c315a79a39c13acc7573))
- **know-your-world:** add multiplayer cursor sharing and fix map viewport ([c3b94be](https://github.com/antialias/soroban-abacus-flashcards/commit/c3b94bea3d43dfdd022d27974c679f055ec39043))
- **know-your-world:** add puzzle piece fly-to-map animation for learning mode ([7c49652](https://github.com/antialias/soroban-abacus-flashcards/commit/7c496525e91299ead391eccfe0e83f886e120aaa))
- **know-your-world:** add range thermometer for region size selection ([c7c4e7c](https://github.com/antialias/soroban-abacus-flashcards/commit/c7c4e7cef3ddb8af54826992f4a94b97b63e4698))
- **know-your-world:** add region shape silhouette to learning takeover ([ebe07e3](https://github.com/antialias/soroban-abacus-flashcards/commit/ebe07e358f9f5642f662d7918e3c1893f48303ee))
- **know-your-world:** add session-based give-up voting and fix cursor emojis ([bb2d6fc](https://github.com/antialias/soroban-abacus-flashcards/commit/bb2d6fc7d80632ad960dad2ea70a6ee792d0882e))
- **know-your-world:** add speech announcements and compass-style crosshairs ([e0b762e](https://github.com/antialias/soroban-abacus-flashcards/commit/e0b762e3ee88771009ede39622a6722b4e366ce2))
- **know-your-world:** add speech synthesis for hints with auto-hint/auto-speak ([cd841ff](https://github.com/antialias/soroban-abacus-flashcards/commit/cd841ff7dc3e04eb68b39b712ad8e80d73b27c8d))
- **know-your-world:** add Strudel-based music system ([7dab07b](https://github.com/antialias/soroban-abacus-flashcards/commit/7dab07b3a73817e2900f74e928452d9685ad6a20))
- **know-your-world:** add SVG path geometry helpers for future use ([ea141f0](https://github.com/antialias/soroban-abacus-flashcards/commit/ea141f04f6bf5286369f8e67391ad9812fa05448))
- **know-your-world:** add turn-based restrictions for letter typing ([45730bb](https://github.com/antialias/soroban-abacus-flashcards/commit/45730bb4db3f3c83f02188ab5906f80b1abe3467))
- **know-your-world:** align guidance UI with assistance levels ([7e7a8dc](https://github.com/antialias/soroban-abacus-flashcards/commit/7e7a8dc1e8577ffabee9d7853200b4aad1926d82))
- **know-your-world:** auto-enable hot/cold for learning mode ([dcc32c2](https://github.com/antialias/soroban-abacus-flashcards/commit/dcc32c288fe63317e57a4783afa5e93f73dc4f19))
- **know-your-world:** enhance hint audio and region name display ([e6f58bf](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f58bfd93a849fea3642d81a770f615fd88bc1f))
- **know-your-world:** fix magnifier outline aspect ratio and add visual debug toggle ([ac915f2](https://github.com/antialias/soroban-abacus-flashcards/commit/ac915f2065736b37c97f5847e977bc5152c8a7ca))
- **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f))
- **know-your-world:** implement empirical scale measurement for 1:1 magnifier tracking ([39886e8](https://github.com/antialias/soroban-abacus-flashcards/commit/39886e859ca64967ca073e8172c4c8c8873b6102))
- **know-your-world:** improve magnifier UX and hide abacus on games ([fa1514d](https://github.com/antialias/soroban-abacus-flashcards/commit/fa1514d351d90010a91e73f5c18fb23115154162))
- **know-your-world:** improve mobile magnifier controls and animations ([4449fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/4449fb19b4b66d18167bf9f10eb1364471d63535))
- **know-your-world:** improve mobile magnifier with adaptive zoom and select button ([60cf98e](https://github.com/antialias/soroban-abacus-flashcards/commit/60cf98e77a901c42210833c7b59350d28501eb52))
- **know-your-world:** improve region size filter layout ([558d369](https://github.com/antialias/soroban-abacus-flashcards/commit/558d369ba05f5822165d314c61d6c4eaff68f8f6))
- **know-your-world:** improve setup screen UX ([dc4d621](https://github.com/antialias/soroban-abacus-flashcards/commit/dc4d62195b52fce1b584f6cc9c404ba6ceec2a27))
- **know-your-world:** improve takeover UI and fix celebration sound bug ([a8c6b84](https://github.com/antialias/soroban-abacus-flashcards/commit/a8c6b848551e9d2751c702525072c193e8bbd69f))
- **know-your-world:** live crop updates and safe zone improvements ([3f4691e](https://github.com/antialias/soroban-abacus-flashcards/commit/3f4691e8a3401058014d3e729827ec46dfcd08fd))
- **know-your-world:** make magnifier lazy - only move when cursor obscured ([ac82564](https://github.com/antialias/soroban-abacus-flashcards/commit/ac82564eacec8d3ea4686d4ca3c6132ed7be0342))
- **know-your-world:** make magnifier size responsive to aspect ratio ([5920cb4](https://github.com/antialias/soroban-abacus-flashcards/commit/5920cb4dc3c2e0aa611d3d770ea5d0220e3413ae))
- **know-your-world:** match setup phase map positioning with gameplay ([b030558](https://github.com/antialias/soroban-abacus-flashcards/commit/b0305581f90c8c6751b2ac84b02d5e1b05386c6e))
- **know-your-world:** move region size filters inside map preview ([81301ab](https://github.com/antialias/soroban-abacus-flashcards/commit/81301ab1484247e905f05faba81862d63256b5bd))
- **know-your-world:** move start button below settings controls ([a05c4ca](https://github.com/antialias/soroban-abacus-flashcards/commit/a05c4ca5bf52ad5a0b807a7b8702cd5ce0b3a6ef))
- **know-your-world:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a))
- **know-your-world:** responsive setup + travel-themed start button ([02762fa](https://github.com/antialias/soroban-abacus-flashcards/commit/02762fad81dcc71ece14f9cc463812f85c1cc275))
- **know-your-world:** separate region filtering from assistance level ([9499e4e](https://github.com/antialias/soroban-abacus-flashcards/commit/9499e4e8b51ea48aac067473e36d469f62e2b9b1))
- **know-your-world:** show magnifier on mobile drag gesture ([a02a710](https://github.com/antialias/soroban-abacus-flashcards/commit/a02a7108e9825bb7de5f72ae426d1c995ef66422))
- **know-your-world:** speak country names in user's locale ([426a1e6](https://github.com/antialias/soroban-abacus-flashcards/commit/426a1e68687da1f4bbf84aa855004571892f60f8))
- **know-your-world:** sync letter confirmation across multiplayer sessions ([655660f](https://github.com/antialias/soroban-abacus-flashcards/commit/655660f7cfd61d3d464176d06e08267c7afb9c80))
- **know-your-world:** unified region selector with inline list on desktop ([d329d80](https://github.com/antialias/soroban-abacus-flashcards/commit/d329d803997bb25e73b833e692306d34f77bc0b1))
- **know-your-world:** unify setup and gameplay UI positions ([141a506](https://github.com/antialias/soroban-abacus-flashcards/commit/141a50673941b4a85471626b1a01ea85fffa9d2e))
- **know-your-world:** unify setup UI positions with gameplay ([c1a0485](https://github.com/antialias/soroban-abacus-flashcards/commit/c1a0485b1d5421c09afec480664261e033bc22fa))
- **know-your-world:** wire interaction state machine to MapRenderer ([7e55953](https://github.com/antialias/soroban-abacus-flashcards/commit/7e55953eeec79be431e3f8f643e589322946de0c))
- make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa))
- make resize handle grab tab fully draggable with rounded corners ([be40f70](https://github.com/antialias/soroban-abacus-flashcards/commit/be40f70bc6dba40ee0a1e6cdfb75c1833943bccb))
- make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e))
- make super zoom threshold configurable and increase to 3px ([d7ce474](https://github.com/antialias/soroban-abacus-flashcards/commit/d7ce474a517c3690f92a077999377b59c314e7f8))
- make zoom transitions 4x slower for smoother experience ([ca752bd](https://github.com/antialias/soroban-abacus-flashcards/commit/ca752bd0aa073927b5c4d85d379002cb049a505f))
- move difficulty parameters into Smart mode ([4b66758](https://github.com/antialias/soroban-abacus-flashcards/commit/4b667587f826ae68d81da7d7708d67b6362bfc51))
- move layout controls to OrientationPanel with toggles ([995966f](https://github.com/antialias/soroban-abacus-flashcards/commit/995966ffbc5c745a938fff0f7e1420fd6ff5c471))
- operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e))
- optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622))
- pause zoom animation at precision mode threshold ([c4989b3](https://github.com/antialias/soroban-abacus-flashcards/commit/c4989b3ab0058a77b3c0cf9c54bfe9dde7935a9c))
- pause/resume zoom animation at precision mode threshold ([bdf59e5](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf59e571d4fe515c3a4990bcdc4ed2f6ee70d19))
- pause/resume zoom animation at precision mode threshold ([4687820](https://github.com/antialias/soroban-abacus-flashcards/commit/4687820d8a7088c6ee4e2a21188db5d6e991e4dc))
- persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c))
- **practice:** add dark mode support and fix doubled answer digits ([026993c](https://github.com/antialias/soroban-abacus-flashcards/commit/026993cb05e74ee7f580c972ae7e92db74ce1c54))
- **practice:** add progressive help overlay with proper positioning ([9a4ab82](https://github.com/antialias/soroban-abacus-flashcards/commit/9a4ab8296ed5d28dc4e9cb2fbd1be4c50eb251f7))
- **practice:** add session HUD with tape-deck controls and PageWithNav ([b19c6d0](https://github.com/antialias/soroban-abacus-flashcards/commit/b19c6d0eca8331983990f070e704cd9249824265))
- **practice:** add smooth problem transition animation ([b12112e](https://github.com/antialias/soroban-abacus-flashcards/commit/b12112e8da30d2e335cefef9f3c26eab77ae919b))
- **practice:** add student onboarding and offline sync features ([b52f054](https://github.com/antialias/soroban-abacus-flashcards/commit/b52f0547afaf72104b893496cac4a0092cb07ec6))
- **practice:** add three-part daily practice session system ([5855438](https://github.com/antialias/soroban-abacus-flashcards/commit/585543809afe7b84f01a7ff644a30f35c2b6c1c4))
- **practice:** improve help UX with coach hints and simplified UI ([19169ad](https://github.com/antialias/soroban-abacus-flashcards/commit/19169ad9feff297a08c59077d3c2fc3b0c8fdf99))
- **practice:** integrate progressive help with decomposition display ([804d937](https://github.com/antialias/soroban-abacus-flashcards/commit/804d937dd989a2feb9a26330b2d7ded96765b106))
- redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e))
- remove all easter egg hints from 404 page ([1756182](https://github.com/antialias/soroban-abacus-flashcards/commit/17561829efa4831077cd927a64bc2b62fc025c55))
- remove redundant navigation buttons from 404 page ([e5262e5](https://github.com/antialias/soroban-abacus-flashcards/commit/e5262e50071a6c003160f1f77adcfbbea75e8598))
- show magnifier only when current target region needs magnification ([996c973](https://github.com/antialias/soroban-abacus-flashcards/commit/996c973774286768952454c369dff2b37d875833))
- show magnifier only when target region needs it ([c6997ac](https://github.com/antialias/soroban-abacus-flashcards/commit/c6997ac9a7122f415c85eef388a543e7c44337f6))
- show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682))
- smooth cursor dampening transitions with react-spring ([66544dc](https://github.com/antialias/soroban-abacus-flashcards/commit/66544dc7dd0d573151a0c924c8a671939868a971))
- **thermometer:** add "only" buttons to quickly select single category ([623f882](https://github.com/antialias/soroban-abacus-flashcards/commit/623f882075f03d4dfa7cd823974f9c3f773d3b0b))
- **worksheets:** add 3x scale effect to thrown dice ([920a855](https://github.com/antialias/soroban-abacus-flashcards/commit/920a855eb5f5b4415d7d8acdc5669c0d31a927d0))
- **worksheets:** add draggable dice easter egg with physics ([b8e66df](https://github.com/antialias/soroban-abacus-flashcards/commit/b8e66dfc17c359066b9e1bde656d2edc32420294))
- **worksheets:** add duplicate risk warnings to page selector UI ([1d8dceb](https://github.com/antialias/soroban-abacus-flashcards/commit/1d8dceb55b10d00127f7cf624fd279acd1f00e1d))
- **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c))
- **worksheets:** add QR codes with share codes for easy worksheet sharing ([a0e73d9](https://github.com/antialias/soroban-abacus-flashcards/commit/a0e73d971bb1a6994d300ddf9b7717d53076b05f))
- **worksheets:** add shuffle button with animated dice icon ([f97efb5](https://github.com/antialias/soroban-abacus-flashcards/commit/f97efb5c94ca00bf7b9fbaa48d65981f2d1766a1))
- **worksheets:** add viewport edge ricochet to dice physics ([c6db7dc](https://github.com/antialias/soroban-abacus-flashcards/commit/c6db7dcfa2a6f718201b65c3ace6aa5bb85fbb05))
- **worksheets:** enhance dice throw physics for natural feel ([047a960](https://github.com/antialias/soroban-abacus-flashcards/commit/047a96056734418f0c205098eba4a64490927557))
- **worksheets:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc))
- **worksheets:** smooth dice rotation settle to final face ([d00c707](https://github.com/antialias/soroban-abacus-flashcards/commit/d00c70750e4b9b01abb97dc7d668f782503a9dbd))
- **worksheets:** upgrade to 3D dice with random rotation animation ([3cd5e49](https://github.com/antialias/soroban-abacus-flashcards/commit/3cd5e4992bed87ecf5f87dd30973811b71b8e99d))
### Performance Improvements
- add spatial filtering to skip distant regions ([8cb4c88](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb4c88bef6688dd9fe7364545878b5b181f7257))
- cache polygon conversions to fix performance regression ([348ce8f](https://github.com/antialias/soroban-abacus-flashcards/commit/348ce8f3146c2728c6f8a0bb19d85743de34ba10))
- **know-your-world:** memoize state machine return value and remove debug logging ([d85b976](https://github.com/antialias/soroban-abacus-flashcards/commit/d85b976f8b3d6a26e2e0b2d1b6cdb23ccda93445))
- reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9))
### Reverts
- **know-your-world:** undo premature extractions, restore working state ([f0bf205](https://github.com/antialias/soroban-abacus-flashcards/commit/f0bf2050d3500de38ac776e026179b7e31fc28c8))
- remove ngrok and LAN IP detection ([0040b57](https://github.com/antialias/soroban-abacus-flashcards/commit/0040b578296b061d5795df220162970d37edd156))
# [2.14.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.13.2...abacus-react-v2.14.0) (2025-11-08)
### Bug Fixes
- add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997))
- replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7))
- use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff))
- **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd))
- **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3))
### Features
- add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a))
- add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80))
- add theme support to abacus style dropdown ([2e294ee](https://github.com/antialias/soroban-abacus-flashcards/commit/2e294ee820bdf01dde39c80cef85db39d5657d70))
- add theme support to config panel components ([c868421](https://github.com/antialias/soroban-abacus-flashcards/commit/c8684213fa61a926cdf90fbdd1dc84c008bb6ea3))
- add theme support to desktop hamburger menu ([ab9272b](https://github.com/antialias/soroban-abacus-flashcards/commit/ab9272bee61703af465264f3a8bb2dd6c270a9f3))
- add theme support to MyAbacus button ([702c1c9](https://github.com/antialias/soroban-abacus-flashcards/commit/702c1c9af25e99960ee958d0ad5b631f48138488))
- add theme support to orientation and generate panels ([e38775b](https://github.com/antialias/soroban-abacus-flashcards/commit/e38775b9910751c4cd1d7aed420324315f21537a))
- add theme support to worksheet page container ([5c14925](https://github.com/antialias/soroban-abacus-flashcards/commit/5c14925d7dbfc6e30dc7b53d6824f6aa8c2f421e))
- add theme support to worksheet preview ([693b679](https://github.com/antialias/soroban-abacus-flashcards/commit/693b67996599036f9eb20cc165f4200a4905a6dc))
- implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf))
- implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75))
- make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d))
- **worksheets:** filter operator-specific scaffolds from difficulty change descriptions ([cace1c7](https://github.com/antialias/soroban-abacus-flashcards/commit/cace1c75c6730402e4a4206ff54d59f7a18bf1f7))
- **worksheets:** filter operator-specific scaffolds from preset summaries ([8407b07](https://github.com/antialias/soroban-abacus-flashcards/commit/8407b070f9a0940d4f5321afc0b60e97b2334a2f))
- **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843))
## [2.13.2](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.13.1...abacus-react-v2.13.2) (2025-11-08)
### Bug Fixes
- **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee))
## [2.13.1](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.13.0...abacus-react-v2.13.1) (2025-11-08)
### Bug Fixes
- **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907))
# [2.13.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.12.0...abacus-react-v2.13.0) (2025-11-08)
### Bug Fixes
- add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007))
- PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438))
### Features
- **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1))
# [2.12.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.11.0...abacus-react-v2.12.0) (2025-11-08)
### Bug Fixes
- add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2))
- arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01))
- disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60))
- make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644))
- position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf))
- prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263))
- reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255))
- resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca))
- use curved Bezier path for borrow arrow ([9b4eb14](https://github.com/antialias/soroban-abacus-flashcards/commit/9b4eb14aaa344fe47ea9bccc9a3df1d7f613bb9d))
- use dark gray for borrowing hints on colored backgrounds ([5cb346d](https://github.com/antialias/soroban-abacus-flashcards/commit/5cb346deee53d4c23a827f641947632614bc0400))
- use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8))
- **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b))
- **worksheets:** Add operator to preview query key and update UI labels ([97ddc7e](https://github.com/antialias/soroban-abacus-flashcards/commit/97ddc7ee67d5886045b3b304d16e34fbcb305b17))
- **worksheets:** add V4 fields to preview query key for cache invalidation ([d9b54a7](https://github.com/antialias/soroban-abacus-flashcards/commit/d9b54a736c389d0ee2bc55808c55456ebad91c76))
- **worksheets:** align makeEasier fallback with spec priorities ([3e56e1d](https://github.com/antialias/soroban-abacus-flashcards/commit/3e56e1d6b60cb35235ffbe7410e21d81fda0bf68))
- **worksheets:** align makeHarder fallback with spec priorities ([a170209](https://github.com/antialias/soroban-abacus-flashcards/commit/a170209b2f7f626bd6913bf05bd994ce23eb4484))
- **worksheets:** correct findNearestPreset direction logic ([878cf02](https://github.com/antialias/soroban-abacus-flashcards/commit/878cf025114ef4dbf5a0b756245bca8f94ffa544))
- **worksheets:** correct scaffolding summary to include all conditional modes ([2797038](https://github.com/antialias/soroban-abacus-flashcards/commit/2797038502ed1cb335ba693a4cd1d227c29a4f55))
- **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9))
- **worksheets:** increase color visibility for difficulty presets ([a7412ad](https://github.com/antialias/soroban-abacus-flashcards/commit/a7412adbee8d606206968e98c5ff171cf5b39eb1))
- **worksheets:** increase dropdown button height to fit all content lines ([3a43149](https://github.com/antialias/soroban-abacus-flashcards/commit/3a43149995c99aa4866d36e154813bfb37421d65))
- **worksheets:** Make destination borrow box more visible ([a01fa81](https://github.com/antialias/soroban-abacus-flashcards/commit/a01fa818b464b71dc4d7ea920d78404b6bc1b9d4))
- **worksheets:** persist digitRange and manualPreset in auto-save ([c874995](https://github.com/antialias/soroban-abacus-flashcards/commit/c87499535a145613fb6add8a1d546c094007f67f))
- **worksheets:** prevent wrong preset showing as active at custom positions ([88e929e](https://github.com/antialias/soroban-abacus-flashcards/commit/88e929ed6374f954c64a720f84e166a3ce94f386))
- **worksheets:** Set showBorrowNotation to false for smart mode ([e9d52ba](https://github.com/antialias/soroban-abacus-flashcards/commit/e9d52bab493baf0b4b0280c3eda38bfd0e4ddd05))
- **worksheets:** show ten-frames in smart mode when rule is 'always' ([0bc8272](https://github.com/antialias/soroban-abacus-flashcards/commit/0bc827283088af33f25e66c1f0b57b5040e4649b))
- **worksheets:** update display options preview to use new problem-stack signature ([258b9ac](https://github.com/antialias/soroban-abacus-flashcards/commit/258b9ac1b4e9a64a145318e4c965b149986eea25))
- **worksheets:** use fixed height instead of min-height for dropdown button ([fe1ef8a](https://github.com/antialias/soroban-abacus-flashcards/commit/fe1ef8a7fc536507e33b7c6cf8c444214fef6ad5))
- **worksheets:** use imperative voice for difficulty adjustment button labels ([d991512](https://github.com/antialias/soroban-abacus-flashcards/commit/d99151239dfad9f3de6284e8aa31d9eae2ac7bda))
- **worksheets:** use white text on colored backgrounds for readability ([2b7b8ec](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7b8ecc87b920333531ae5039ba1f24a2400094))
### Features
- **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a))
- add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034))
- add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807))
- add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba))
- add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400))
- **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359))
- **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f))
- handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5))
- implement borrowing hints arrow visualization ([b2f875c](https://github.com/antialias/soroban-abacus-flashcards/commit/b2f875c5a5fe85639caea2762c73c6543da6a03f))
- implement borrowing hints visual guidance ([89b8f98](https://github.com/antialias/soroban-abacus-flashcards/commit/89b8f98662b638f9a1e6cf64d87e74fc6b3e8f6b))
- implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461))
- optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a))
- refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886))
- **worksheets:** Add borrow notation scaffolding for subtraction ([ff161d4](https://github.com/antialias/soroban-abacus-flashcards/commit/ff161d4e30a42dc58d4a409bd2f948e61b6d495b))
- **worksheets:** add color-coding to difficulty presets with interpolation ([b1201b8](https://github.com/antialias/soroban-abacus-flashcards/commit/b1201b83c02e85c15e7c581be58179a9a92c9893))
- **worksheets:** add difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a))
- **worksheets:** add interactive 2D difficulty map with hover preview ([b92b702](https://github.com/antialias/soroban-abacus-flashcards/commit/b92b702223d8a94a32b6ba53e6ff1214563b341e))
- **worksheets:** add ModeSelector component for Smart/Manual mode switching ([4ffd47a](https://github.com/antialias/soroban-abacus-flashcards/commit/4ffd47a6b6abe05475d1b01ec007a1011c43358b))
- **worksheets:** add operator selection and subtraction problem generation ([ab87c6e](https://github.com/antialias/soroban-abacus-flashcards/commit/ab87c6ebe73781127c6f52b501673ba9919c3dd9))
- **worksheets:** add regrouping frequency controls to Manual mode ([f060692](https://github.com/antialias/soroban-abacus-flashcards/commit/f06069241ffc095e4fef8894d70b392f3ef1153d))
- **worksheets:** add subtraction problem analysis and implementation plan ([a7b48a2](https://github.com/antialias/soroban-abacus-flashcards/commit/a7b48a287967f91448d2ba1fe4e83d99b4e8d733))
- **worksheets:** add V3 config schema with Smart/Manual mode discrimination ([cd1b3ed](https://github.com/antialias/soroban-abacus-flashcards/commit/cd1b3edc15495818655d7c2aaaf2777064fc8a2f))
- **worksheets:** add visual mode badges to scaffolding summary ([eaeeae4](https://github.com/antialias/soroban-abacus-flashcards/commit/eaeeae4ce887811eda926aa6184ab9f5346134f5))
- **worksheets:** display scaffolding attributes on separate lines with fixed button height ([cc9fff7](https://github.com/antialias/soroban-abacus-flashcards/commit/cc9fff7733e087af4baad483154ba8c3075b04d2))
- **worksheets:** implement true RGB color interpolation for custom difficulty ([952cffa](https://github.com/antialias/soroban-abacus-flashcards/commit/952cffa2d1dc55edc4f0d2a5ac40e266b8866706))
- **worksheets:** implement unique place value colors for 1-6 digit problems ([65e272c](https://github.com/antialias/soroban-abacus-flashcards/commit/65e272c5700bfa0a64bc6cb14818ae1c43ea2e06))
- **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75))
- **worksheets:** make progressive difficulty available in both Smart and Manual modes ([54abd5d](https://github.com/antialias/soroban-abacus-flashcards/commit/54abd5de098026d988a6ccfde2c9ffde92e7f79b))
- **worksheets:** Phase 10 - Add operator validation ([d93dfac](https://github.com/antialias/soroban-abacus-flashcards/commit/d93dfac46145064afed188a12843902106697d53))
- **worksheets:** Phase 5 - Update typstGenerator for operator support ([b191bb9](https://github.com/antialias/soroban-abacus-flashcards/commit/b191bb9a828488504abc69f2ecb94f17592834a6))
- **worksheets:** Phase 7 - Add operator to auto-save persistence ([01d0959](https://github.com/antialias/soroban-abacus-flashcards/commit/01d095942d476d14b8466ad30187e53b9bb89d9e))
- **worksheets:** Phase 8 - Update preview and example routes for operator ([0106068](https://github.com/antialias/soroban-abacus-flashcards/commit/010606848dce4ead4ad79b94e0f87bcf070e7aae))
- **worksheets:** Phase 9 - Update DisplayOptionsPreview for operator ([d5bbd78](https://github.com/antialias/soroban-abacus-flashcards/commit/d5bbd783b3b9f56f63d1217fdbde88d3455b6fe2))
- **worksheets:** reorganize orientation panel with Radix dropdown and compact layout ([f37960a](https://github.com/antialias/soroban-abacus-flashcards/commit/f37960aa949247c16da44d603d993ea885bd242f))
- **worksheets:** replace digit selector with Radix double-thumbed slider ([c0298cf](https://github.com/antialias/soroban-abacus-flashcards/commit/c0298cf65d1017bb5b2258174f3a75f66698899a))
- **worksheets:** show enabled scaffolding aids instead of numeric level ([0b8b0d2](https://github.com/antialias/soroban-abacus-flashcards/commit/0b8b0d21c52013910f57685d7c23a06a7173ad7b))
- **worksheets:** show nearest presets for custom difficulty configurations ([0e3f0ae](https://github.com/antialias/soroban-abacus-flashcards/commit/0e3f0aed9473bda4b671503f19bf7d1e6f6be223))
- **worksheets:** update validation and generation for V3 mode-aware schema ([ada9600](https://github.com/antialias/soroban-abacus-flashcards/commit/ada96005f509664def0a1c463f791b8b9226734e))
- **worksheets:** use more vibrant and distinct difficulty colors ([984b75c](https://github.com/antialias/soroban-abacus-flashcards/commit/984b75cb94e260d66d4e92b39edfab5a4adeeb25))
- **worksheets:** use scaffolding summary for all preset descriptions ([23f0f1d](https://github.com/antialias/soroban-abacus-flashcards/commit/23f0f1dc21d0a2ae6d064a4630940ba72d048173))
### Reverts
- remove all color-coding attempts for difficulty presets ([d52b2aa](https://github.com/antialias/soroban-abacus-flashcards/commit/d52b2aa4aa2f1fa91ae991ef42c1fd65343c261e))
# [2.11.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.10.1...abacus-react-v2.11.0) (2025-11-07)
### Bug Fixes
- **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca))
- **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5))
- **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c))
- **syntax:** correct div nesting and indentation in abacus page ([3c9ecca](https://github.com/antialias/soroban-abacus-flashcards/commit/3c9eccab7840e04e876878bbd3ad4f01679bdca3))
- **syntax:** remove emoji variation selector causing build error ([00aabd8](https://github.com/antialias/soroban-abacus-flashcards/commit/00aabd8e6b2fe87cf4ea5cddc978c0788140be07))
- **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592))
- **worksheets:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62))
- **worksheets:** remove foreign key constraint to support guest users ([e6e9ec3](https://github.com/antialias/soroban-abacus-flashcards/commit/e6e9ec3e4fdb6b533a550e55738d47007f6e7aa3))
- **worksheets:** resolve SSR URL error and guest user foreign key constraint ([42ea8d5](https://github.com/antialias/soroban-abacus-flashcards/commit/42ea8d561e400ba213825bb4f9fc2a3f4249c09d))
### Features
- add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c))
- add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d))
- **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c))
- **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498))
- **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30))
- **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc))
- **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4))
- **i18n:** add translations for addition worksheet creator ([2bf645a](https://github.com/antialias/soroban-abacus-flashcards/commit/2bf645a30c9c1ecdedbc7fc6b1a6013e88e90c5c))
- **i18n:** add worksheet translations for all languages ([6acd15a](https://github.com/antialias/soroban-abacus-flashcards/commit/6acd15aab8a0ea1cab3f96e9d9023b2e78735a88))
- replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d))
- **worksheets:** add customizable operands to preview ([21cda18](https://github.com/antialias/soroban-abacus-flashcards/commit/21cda181e4102220c6524a4879dccf5b8e6d4b7f))
- **worksheets:** add diagonal-split pattern to carry boxes ([5b91809](https://github.com/antialias/soroban-abacus-flashcards/commit/5b9180916ebd2c8ed3425b80ea25add2334da2ea))
- **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3))
- **worksheets:** add type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be))
- **worksheets:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259))
- **worksheets:** generate discrete pages with precise sizing ([56c0227](https://github.com/antialias/soroban-abacus-flashcards/commit/56c0227e9f27c39087ff9af7fa32128df6fc7311))
- **worksheets:** implement auto-save and load for worksheet settings ([186fa81](https://github.com/antialias/soroban-abacus-flashcards/commit/186fa81b08bfadca33b87c34906235015ccf3146))
- **worksheets:** implement constrained 2D difficulty system with pedagogical zones ([c39b7f6](https://github.com/antialias/soroban-abacus-flashcards/commit/c39b7f6d3ac845a6ec9601b7c260c173df39a49e))
- **worksheets:** improve difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d))
- **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095))
- **worksheets:** pre-generate preview on server to eliminate loading flash ([02c9187](https://github.com/antialias/soroban-abacus-flashcards/commit/02c918713d508ccd4f31b9c671c6d8cbe8f84036))
- **worksheets:** redesign display options as toggle buttons ([ac3b749](https://github.com/antialias/soroban-abacus-flashcards/commit/ac3b74960506be3f7d9b03e558e6e60b8ce6af4a))
- **worksheets:** simplify difficulty controls with collapsible regrouping pane ([bb363c0](https://github.com/antialias/soroban-abacus-flashcards/commit/bb363c0837a064db98f1145cf599af74907f3d80))
- **worksheets:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d))
## [2.10.1](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.10.0...abacus-react-v2.10.1) (2025-11-05)
### Bug Fixes
- **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861))
# [2.10.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.9.0...abacus-react-v2.10.0) (2025-11-05)
### Bug Fixes
- replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e))
### Features
- add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434))
- **calendar:** add beautiful daily calendar with locale-based paper size detection ([bdca315](https://github.com/antialias/soroban-abacus-flashcards/commit/bdca3154f8336e17a7031be8d2917f9cf05f274a))
- **calendar:** add i18n support and cropped abacus day numbers ([5242f89](https://github.com/antialias/soroban-abacus-flashcards/commit/5242f890f725c872a74b6ee45cd611092628690a))
- **i18n:** add internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c))
# [2.9.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.8.3...abacus-react-v2.9.0) (2025-11-05)
### Bug Fixes
- **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17))
- **guide:** increase abacus sizes - they were too small ([1074624](https://github.com/antialias/soroban-abacus-flashcards/commit/1074624b2fbce1d1d887dbd6326cf22eeb31dcec))
- **guide:** make abacus sizes consistent and add nav spacing ([bea4842](https://github.com/antialias/soroban-abacus-flashcards/commit/bea4842a29aa86ca4261b4ddd6150bacc8babc46))
- **guide:** remove inner containers and tighten margins ([7e54c6f](https://github.com/antialias/soroban-abacus-flashcards/commit/7e54c6f4fc5bc4daa6088eb3381d860a495776f2))
- **layout:** add systematic spacing for fixed nav bar ([4559fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/4559fb121d0df954ebaf33616a5262c7ca633c6e))
- **layout:** remove wrapper, use utility class for nav spacing ([247c3d9](https://github.com/antialias/soroban-abacus-flashcards/commit/247c3d9874303f83641e599724a485eea8d5604a))
- **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2))
### Features
- **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9))
- add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa))
## [2.8.3](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.8.2...abacus-react-v2.8.3) (2025-11-05)
### Bug Fixes
- **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161))
- **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72))
- **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc))
- **web:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac))
## [2.8.2](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.8.1...abacus-react-v2.8.2) (2025-11-04)
### Bug Fixes
- **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790))
## [2.8.1](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.8.0...abacus-react-v2.8.1) (2025-11-04)
### Bug Fixes
- **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2))
- **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7))
# [2.8.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.7.1...abacus-react-v2.8.0) (2025-11-04)
### Bug Fixes
- **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b))
- **web:** generate styled-system artifacts during build ([293390a](https://github.com/antialias/soroban-abacus-flashcards/commit/293390ae350a6c6aa467410f68c735512104d9dd))
- **web:** move react-dom/server import to API route to satisfy Next.js ([00a8bc3](https://github.com/antialias/soroban-abacus-flashcards/commit/00a8bc3e5e8f044df280c4356d3605a852f82e84))
- **web:** prevent abacus overlap in composite calendar ([448f93c](https://github.com/antialias/soroban-abacus-flashcards/commit/448f93c1e2a7f86bc48e678d4599ca968c6d81d2)), closes [#f0f0f0](https://github.com/antialias/soroban-abacus-flashcards/issues/f0f0f0)
- **web:** use dynamic import for react-dom/server in API route ([4f93c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/4f93c7d996732de4bc19e7acf2d4ce803cba88b6))
- **web:** use nested SVG elements to prevent coordinate space conflicts ([f9cbee8](https://github.com/antialias/soroban-abacus-flashcards/commit/f9cbee8fcdf80641f3b82a65fad6b8a3575525fc))
### Features
- **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695))
- **web:** add Typst-based preview endpoint with React Suspense ([599a758](https://github.com/antialias/soroban-abacus-flashcards/commit/599a758471c43ab0fc87301c5e7eeceed608062e))
- **web:** add year abacus to calendar header and make grid bolder ([867c7ee](https://github.com/antialias/soroban-abacus-flashcards/commit/867c7ee17251b8df13665bee9c0391961975e681)), closes [#333](https://github.com/antialias/soroban-abacus-flashcards/issues/333)
- **web:** optimize monthly calendar for single-page layout ([b277a89](https://github.com/antialias/soroban-abacus-flashcards/commit/b277a89415d1823455376c3e0f641b52f3394e7c))
- **web:** redesign monthly calendar as single composite SVG ([8ce8038](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce8038baeea0b8b0fffe3215746958731bd9d6a))
## [2.7.1](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.7.0...abacus-react-v2.7.1) (2025-11-04)
### Bug Fixes
- add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7))
- **web:** use AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8))
# [2.7.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.6.0...abacus-react-v2.7.0) (2025-11-04)
### Bug Fixes
- **web:** add dynamic export to rithmomachia page ([329e623](https://github.com/antialias/soroban-abacus-flashcards/commit/329e62321245ef62726c986c917f19a909a5b65e))
- **web:** fix Typst PDF generation path resolution ([7ce1287](https://github.com/antialias/soroban-abacus-flashcards/commit/7ce12875254a31d8acdb35ef5de7d36d215ccd92))
### Features
- **abacus-react:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf))
- **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663))
- **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e))
# [2.6.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.5.0...abacus-react-v2.6.0) (2025-11-04)
### Bug Fixes
- **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08))
### Features
- **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229))
- **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4))
# [2.5.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.4.0...abacus-react-v2.5.0) (2025-11-03)
### Features
- **abacus-react:** add core utility functions for state management ([e65541c](https://github.com/antialias/soroban-abacus-flashcards/commit/e65541c100e590a51448750c6d5178ed4f3e8eeb))
- **abacus-react:** add layout and educational props ([35bbcec](https://github.com/antialias/soroban-abacus-flashcards/commit/35bbcecb9e36f1ef5917a5a629f5e78f1f490e9c))
- **abacus-react:** add pre-defined theme presets ([cf1f950](https://github.com/antialias/soroban-abacus-flashcards/commit/cf1f950c7c5fb9ee1f0de673235d6f037be3b9d6))
- **abacus-react:** add React hooks for abacus calculations ([de038d2](https://github.com/antialias/soroban-abacus-flashcards/commit/de038d2afc26c36c1490d5ea45dace0ab812c5cc))
- **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31))
# [2.4.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.3.0...abacus-react-v2.4.0) (2025-11-03)
### Bug Fixes
- remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f))
- remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759))
- rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f))
- use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0))
### Features
- complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631))
- enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d))
# [2.3.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.2.0...abacus-react-v2.3.0) (2025-11-03)
### Bug Fixes
- adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6))
- configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f))
- correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9))
- extract pure SVG content from AbacusReact renders ([b07f1c4](https://github.com/antialias/soroban-abacus-flashcards/commit/b07f1c421616bcfd1f949f9a42ce1b03df418945))
- **games:** prevent horizontal page scroll from carousel overflow ([5a8c98f](https://github.com/antialias/soroban-abacus-flashcards/commit/5a8c98fc10704e459690308a84dc7ee2bfa0ef6c))
- **games:** smooth scroll feel for carousel wheel navigation ([f80a73b](https://github.com/antialias/soroban-abacus-flashcards/commit/f80a73b35c324959bfd7141ebf086cb47d3c0ebc))
- **games:** use specific transition properties for smooth carousel loop ([187271e](https://github.com/antialias/soroban-abacus-flashcards/commit/187271e51527ee0129f71d77be1bd24072b963c4))
- include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8))
- mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d))
- **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1))
- reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4))
- resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999))
- separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972))
- tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5))
- use Debian base for deps stage to match runner for binary compatibility ([f8fe6e4](https://github.com/antialias/soroban-abacus-flashcards/commit/f8fe6e4a415f8655626af567129d0cda61b82e15))
- use default BOSL2 branch instead of non-existent v2.0.0 tag ([f4ffc5b](https://github.com/antialias/soroban-abacus-flashcards/commit/f4ffc5b0277535358bea7588309a1a4afd1983a1))
- use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da))
- various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1))
### Features
- add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb))
- add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556))
- add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f))
- add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f))
- add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b))
- dynamic day-of-month favicon using subprocess pattern ([4d0795a](https://github.com/antialias/soroban-abacus-flashcards/commit/4d0795a9df74fcb085af821eafb923bdcb5f0b0c))
- dynamically crop favicon to active beads for maximum size ([5670322](https://github.com/antialias/soroban-abacus-flashcards/commit/567032296aecaad13408bdc17d108ec7c57fb4a8))
- **games:** add autoplay and improve carousel layout ([9f51edf](https://github.com/antialias/soroban-abacus-flashcards/commit/9f51edfaa95c14f55a30a6eceafb9099eeed437f))
- **games:** add horizontal scroll support to carousels ([a224abb](https://github.com/antialias/soroban-abacus-flashcards/commit/a224abb6f660e1aa31ab04f5590b003fae072af9))
- **games:** add rotating games hero carousel ([24231e6](https://github.com/antialias/soroban-abacus-flashcards/commit/24231e6b2ebbdcae066344df54e7e80e7d221128))
- **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa))
- install embla-carousel-autoplay for games carousel ([946e5d1](https://github.com/antialias/soroban-abacus-flashcards/commit/946e5d19107020992be8945f8fe7c41e4bc2a0e2))
- install embla-carousel-react for player profile carousel ([642ae95](https://github.com/antialias/soroban-abacus-flashcards/commit/642ae957383cfe1d6045f645bbe426fd80c56f35))
- switch to royal color theme with transparent background ([944ad65](https://github.com/antialias/soroban-abacus-flashcards/commit/944ad6574e01a67ce1fdbb1f2452fe632c78ce43)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#f59e0](https://github.com/antialias/soroban-abacus-flashcards/issues/f59e0) [#a855f7](https://github.com/antialias/soroban-abacus-flashcards/issues/a855f7) [#7e22](https://github.com/antialias/soroban-abacus-flashcards/issues/7e22)
# [2.2.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.1.0...abacus-react-v2.2.0) (2025-11-03)
### Bug Fixes
- **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4))
- **arcade:** allow deactivating players from users who left the room ([7c1c2d7](https://github.com/antialias/soroban-abacus-flashcards/commit/7c1c2d7bebbb9a1acb274d17dd43b6ee5d196f44))
- **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345))
- board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f))
- **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570))
- **card-sorting:** add debug logging for spring animations ([d42947e](https://github.com/antialias/soroban-abacus-flashcards/commit/d42947eb8d5d3d8298f5d3b3d1644891c268dbb6))
- **card-sorting:** add missing gameMode support after hard reset ([a832325](https://github.com/antialias/soroban-abacus-flashcards/commit/a832325debde289d6928c5e6f9c24311c5e079ad))
- **card-sorting:** add missing useMemo import ([949d76d](https://github.com/antialias/soroban-abacus-flashcards/commit/949d76d844c786ada8a6373e4abb7f498f6befb9))
- **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f))
- **card-sorting:** adjust connecting paths for scaled cards ([829c741](https://github.com/antialias/soroban-abacus-flashcards/commit/829c741e554d1490dd7a5bbc17f2a32f7195dc07))
- **card-sorting:** adjust game board for spectator panels ([fc5cf12](https://github.com/antialias/soroban-abacus-flashcards/commit/fc5cf1216fe03edfb7e44afda01192f4b97b4f4e))
- **card-sorting:** adjust viewport dimensions for spectator panels ([4dce16c](https://github.com/antialias/soroban-abacus-flashcards/commit/4dce16cca46c965199b7e09f8b34bfa221efac33))
- **card-sorting:** animate cards from game board to results grid ([17d45fe](https://github.com/antialias/soroban-abacus-flashcards/commit/17d45fe88cd9773f5e550f6ee5a7f0c82cca2023))
- **card-sorting:** correct suffix card detection in auto-arrange ([d02ab59](https://github.com/antialias/soroban-abacus-flashcards/commit/d02ab5922c416042d525f54097a6975ae1541586))
- **card-sorting:** enable card scaling for spectators ([6b095c3](https://github.com/antialias/soroban-abacus-flashcards/commit/6b095c33830341c46139bc847ddaab3db632265e))
- **card-sorting:** enable New Game button during active gameplay ([f3f6eca](https://github.com/antialias/soroban-abacus-flashcards/commit/f3f6eca1db30df9e1e34cc4e77a069a6a3954f3d))
- **card-sorting:** end drag immediately when card becomes locked ([ae45298](https://github.com/antialias/soroban-abacus-flashcards/commit/ae45298ec48efb29587c0a1c1a7986a72821f3ef))
- **card-sorting:** filter local player from emoji overlays on dragged cards ([dc2d94a](https://github.com/antialias/soroban-abacus-flashcards/commit/dc2d94aaa58531ed4f9047e2ca92724d9264643d))
- **card-sorting:** fix results panel layout to not cover cards ([4b4fbfe](https://github.com/antialias/soroban-abacus-flashcards/commit/4b4fbfef322ecda06020ad52d4b1788267112460))
- **card-sorting:** hide activity notifications in spectator mode ([5cca279](https://github.com/antialias/soroban-abacus-flashcards/commit/5cca279687d8973d25bd9a411a55b632d1c82f63))
- **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5))
- **card-sorting:** lock correctly positioned prefix/suffix cards ([170abed](https://github.com/antialias/soroban-abacus-flashcards/commit/170abed2318432f309de40692f6092bb4c4a1a45))
- **card-sorting:** lock spring positions after initial animation completes ([275cc62](https://github.com/antialias/soroban-abacus-flashcards/commit/275cc62a523d9e849f2162001141b6d75ae0925e))
- **card-sorting:** New Game now restarts with same settings instantly ([f3687ed](https://github.com/antialias/soroban-abacus-flashcards/commit/f3687ed236eff4ebe61699ec02909024c7086fb5))
- **card-sorting:** only shrink/fade cards in correct prefix ([51368c6](https://github.com/antialias/soroban-abacus-flashcards/commit/51368c6ec59d5447ce2875c5e1181dec97fd509d))
- **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76))
- **card-sorting:** preserve rotation when starting drag ([3364144](https://github.com/antialias/soroban-abacus-flashcards/commit/3364144fb6212934b6ad6d63ac6e7b78b436b258))
- **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a))
- **card-sorting:** prevent ghost movements with proper optimistic updates ([bd014be](https://github.com/antialias/soroban-abacus-flashcards/commit/bd014bec4ffa12bcd8f4a4e84ff51203c90c1f1d))
- **card-sorting:** prevent infinite loop when all cards are correct ([34785f4](https://github.com/antialias/soroban-abacus-flashcards/commit/34785f466faaa6b9f2958df786af88561fa80b06))
- **card-sorting:** prevent infinite loop with tolerance-based position comparison ([627b873](https://github.com/antialias/soroban-abacus-flashcards/commit/627b873382eaa76ad16477280d10451cf2951e1a))
- **card-sorting:** prevent position jump when clicking rotated cards ([564a00f](https://github.com/antialias/soroban-abacus-flashcards/commit/564a00f82b6ca6aa8a2c0586ca49fc42d44991a8))
- **card-sorting:** prevent replaying own movements from server ([308168a](https://github.com/antialias/soroban-abacus-flashcards/commit/308168a7fb51013b0851e98b161ba1a1a3e39fbb))
- **card-sorting:** prevent springs from reinitializing on window resize ([30953b8](https://github.com/antialias/soroban-abacus-flashcards/commit/30953b8c4a3cf147f980455818f9ce8eea07837c))
- **card-sorting:** prevent springs from resetting after animation ([8aff60c](https://github.com/antialias/soroban-abacus-flashcards/commit/8aff60ce3f8d302ce5c1bde7cb773e63064c36b7))
- **card-sorting:** remove hasAnimatedRef logic causing backwards animation ([a44aa5a](https://github.com/antialias/soroban-abacus-flashcards/commit/a44aa5a4c2d84cab7cf0bbf87485bb61548fdeb2))
- **card-sorting:** remove remaining reveal numbers references ([15c53ea](https://github.com/antialias/soroban-abacus-flashcards/commit/15c53ea4eb4abb824eb0360fb645b1f3e455578e))
- **card-sorting:** restore prefix/suffix card shrinking visual feedback ([f5fb4d7](https://github.com/antialias/soroban-abacus-flashcards/commit/f5fb4d7b76e25286bcdecd017894ff2d78b31963))
- **card-sorting:** show only active players in team members section ([fa9f1a5](https://github.com/antialias/soroban-abacus-flashcards/commit/fa9f1a568f3dff2f4e5e7d3e8841b951ef1b7d04))
- **card-sorting:** smooth scale animation while dragging cards ([0eefc33](https://github.com/antialias/soroban-abacus-flashcards/commit/0eefc332ac2724c54b477301a269915e895db94f))
- **card-sorting:** stabilize inferred sequence for locked cards during drag ([b0cd194](https://github.com/antialias/soroban-abacus-flashcards/commit/b0cd194838705bb7bbf21ac9e318eaba491097b2))
- **card-sorting:** use empty deps array for useSprings to prevent recreation ([cee399e](https://github.com/antialias/soroban-abacus-flashcards/commit/cee399ed1513d32d0fff51a6f63898aa861605e1))
- **card-sorting:** use ref to track initialized state and prevent re-animation ([f389afa](https://github.com/antialias/soroban-abacus-flashcards/commit/f389afa831935e896a626f526cfee378e340a64b))
- **card-sorting:** use same coordinate system for game board and results ([6972fdf](https://github.com/antialias/soroban-abacus-flashcards/commit/6972fdf1105b6e854494efe1c4c587e6b6ff32a9))
- **complement-race:** actually filter by isActive instead of just id ([ef4ca57](https://github.com/antialias/soroban-abacus-flashcards/commit/ef4ca57a6c3f35d1bddc6a70952f478058fbc6b5))
- **complement-race:** ensure continuous position broadcasting during train movement ([df60824](https://github.com/antialias/soroban-abacus-flashcards/commit/df60824f37f52e77e69d32c26926a24e1af88e66))
- **complement-race:** fix ghost train position update lag and reload position reset ([ad78a65](https://github.com/antialias/soroban-abacus-flashcards/commit/ad78a65ed7f63509602e79246e3761653ea39a15))
- **complement-race:** fix react-spring interpolation TypeScript errors ([0add9e4](https://github.com/antialias/soroban-abacus-flashcards/commit/0add9e4ef1d69e4e92ffe279cce09c68efa43714))
- **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c))
- **complement-race:** show only first active player's passengers on train ([2bfd5d2](https://github.com/antialias/soroban-abacus-flashcards/commit/2bfd5d2bda7f7d2d83c69f75600ab461fde15d92))
- **complement-race:** use individual player positions for ghost trains ([00dc4b1](https://github.com/antialias/soroban-abacus-flashcards/commit/00dc4b1d06a4e1763deb16333a298145cafd9187))
- **complement-race:** use local player instead of first player for train display ([915d8a5](https://github.com/antialias/soroban-abacus-flashcards/commit/915d8a5343e70a30c7a82bed645e6628fcc08a86))
- **complement-race:** use sendMove with correct parameters for position updates ([06cd94b](https://github.com/antialias/soroban-abacus-flashcards/commit/06cd94b24cdd9dbd36fb5800c9ba7be194f7eed0))
- copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342))
- correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41))
- delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be))
- **flashcards:** correct pivot point to rotate around card center ([50fc3fd](https://github.com/antialias/soroban-abacus-flashcards/commit/50fc3fdf7f2c9b7412f6d7d890f5e0d52cb86a9b))
- **flashcards:** fix position snap-back by using api.set before decay ([30e16c8](https://github.com/antialias/soroban-abacus-flashcards/commit/30e16c8e5ac3bb25f2d54cf715dc6fb45adc4fcc))
- **flashcards:** improve shadow speed logging with separate throttling ([0f51366](https://github.com/antialias/soroban-abacus-flashcards/commit/0f51366fd56540e691df4931b6350c03043484f1))
- **flashcards:** increase rotation sensitivity 10x for visible grab point physics ([c0fa926](https://github.com/antialias/soroban-abacus-flashcards/commit/c0fa926d16d02c1bfe880b7f0056a760e8461b3b))
- **flashcards:** keep grab point under cursor with proper coordinate conversion ([1869216](https://github.com/antialias/soroban-abacus-flashcards/commit/1869216d2fda77303c0b79d4f613c6dcdaf5324b))
- **flashcards:** revert to simple delta positioning to prevent card jumping ([d018b69](https://github.com/antialias/soroban-abacus-flashcards/commit/d018b699c46aea90e9cdc3309e797ff2d7447ecf))
- **flashcards:** store grab offset in local coordinates to prevent jump ([39d93a9](https://github.com/antialias/soroban-abacus-flashcards/commit/39d93a9e9f48a7d1ce10763cad62a600851a41d5))
- **flashcards:** use explicit per-property configs to fix decay physics ([f32480a](https://github.com/antialias/soroban-abacus-flashcards/commit/f32480a0f9153285341e5a28078840abc0590873))
- **hero-abacus:** restructure layout to prevent visual overlap ([02b6c70](https://github.com/antialias/soroban-abacus-flashcards/commit/02b6c70b7a52f7de2954e5e0efddbed64d419d6c))
- **hero:** prevent nav thrashing with hysteresis ([71b1b93](https://github.com/antialias/soroban-abacus-flashcards/commit/71b1b933b598c0a6a8aef1bc9f8c598c1871b2eb))
- **hero:** prevent SSR hydration mismatch for subtitle ([1bfde8f](https://github.com/antialias/soroban-abacus-flashcards/commit/1bfde8fb251b227ccd2528bfe1c47acffd79fa49))
- **hero:** use Number.isNaN instead of global isNaN ([c229faf](https://github.com/antialias/soroban-abacus-flashcards/commit/c229faffac525f3eebeb12155cb5ca4dff744472))
- **homepage:** add dark gradient overlay for better text contrast on game cards ([6410b21](https://github.com/antialias/soroban-abacus-flashcards/commit/6410b21f829810af27e42d188295630bd67d6b6b))
- **homepage:** add overflow hidden to skill cards ([5070d8d](https://github.com/antialias/soroban-abacus-flashcards/commit/5070d8d64f7f58887ff7259bee9ce5166c4f8af8))
- **homepage:** add overflow hidden to Your Journey section ([415a1fb](https://github.com/antialias/soroban-abacus-flashcards/commit/415a1fb1faa263c9d69b4e781ce22da235ca2b66))
- **homepage:** adjust hero abacus scale for optimal sizing across devices ([86dee31](https://github.com/antialias/soroban-abacus-flashcards/commit/86dee31c9a51ca0712f1b4181a4899d25374d403))
- **homepage:** adjust responsive breakpoints to prevent skill card clipping ([62ff067](https://github.com/antialias/soroban-abacus-flashcards/commit/62ff067bb956b17a9b3569eadc2a32abd24c27b8))
- **homepage:** align container width breakpoint with grid columns ([422bf3d](https://github.com/antialias/soroban-abacus-flashcards/commit/422bf3d968b67e4683ac7ea7e487a84513f992f9))
- **homepage:** correct flashcard transform rendering ([5dc636a](https://github.com/antialias/soroban-abacus-flashcards/commit/5dc636a71c15db28c029fd4f60e4a6c95620f953))
- **homepage:** display gradient backgrounds on all game cards ([c6dc210](https://github.com/antialias/soroban-abacus-flashcards/commit/c6dc210bf8e3a5b4d7d6e53f2a7427d335c65322))
- **homepage:** improve hero abacus sizing and layout ([230f1dc](https://github.com/antialias/soroban-abacus-flashcards/commit/230f1dcd866e5b3625e19f7400f5eae478fe7d0c))
- **homepage:** improve text contrast on game cards with text shadows ([b6410c7](https://github.com/antialias/soroban-abacus-flashcards/commit/b6410c7c225f01f42d095ca270b8da7903cbfbb0))
- **homepage:** increase abacus container width to 120px/150px ([57c212f](https://github.com/antialias/soroban-abacus-flashcards/commit/57c212f4f5be591f712e1c5610e1f323e56e15dd))
- **homepage:** increase skill card abacus container width ([e65e969](https://github.com/antialias/soroban-abacus-flashcards/commit/e65e96952f4e631722c73fc56d088fa3ff1ba858))
- **homepage:** increase skill cards container width to prevent title wrapping ([cd3eb61](https://github.com/antialias/soroban-abacus-flashcards/commit/cd3eb61cb59e6faef37fbf609f37f7e2dc302e72))
- **homepage:** make MiniAbacus fill container properly ([3b5d147](https://github.com/antialias/soroban-abacus-flashcards/commit/3b5d14765dfb2d61a76f66ba3ae09695ce88bb6d))
- **homepage:** prevent skill card overflow ([fa26acf](https://github.com/antialias/soroban-abacus-flashcards/commit/fa26acfbaef1a04bb225956b2f684cd5023b56fa))
- **homepage:** prevent text overflow in skill cards ([a6ac55b](https://github.com/antialias/soroban-abacus-flashcards/commit/a6ac55b7b161e0dd33a4dd5acc0df647b2a513aa))
- **homepage:** reduce mobile abacus scale to prevent scroll hint overlap ([b8235be](https://github.com/antialias/soroban-abacus-flashcards/commit/b8235be612c3f1dbd0da2b6cd1a935001b7dac9b))
- **homepage:** restructure layout to center 1400px wide demo section ([61403f2](https://github.com/antialias/soroban-abacus-flashcards/commit/61403f2f506557b57716a298d4dc481d7853552f))
- **homepage:** set fixed width for learning panel to prevent layout shift ([dc19622](https://github.com/antialias/soroban-abacus-flashcards/commit/dc19622bbba2fead8cd9c0b2bda3a38abba0bd41))
- **homepage:** set fixed width for tutorial panel to prevent layout shift ([aba9f8a](https://github.com/antialias/soroban-abacus-flashcards/commit/aba9f8a94d50590cf94b6cd87f85b497e89045e7))
- **homepage:** set min-width 1400px on container and remove max-width ([aa297d4](https://github.com/antialias/soroban-abacus-flashcards/commit/aa297d4ef7559473a147934766bfa3868552f58d))
- **homepage:** use actual container dimensions for flashcard positioning ([4082a24](https://github.com/antialias/soroban-abacus-flashcards/commit/4082a246a33ea67617b762d5b7490a8c9af0ad49))
- **homepage:** use app-wide abacus config in interactive flashcards ([cf1be2d](https://github.com/antialias/soroban-abacus-flashcards/commit/cf1be2d1730543bd30836a87d9cbdfd2cf48360e))
- **homepage:** widen skill cards container to 650px ([bc1ad3a](https://github.com/antialias/soroban-abacus-flashcards/commit/bc1ad3a43a79570e1f9c61d5118d14ac4c201d71))
- **i18n:** eliminate FOUC by loading messages server-side ([4d4d930](https://github.com/antialias/soroban-abacus-flashcards/commit/4d4d930bd307ce5a405fc5751af6682a9f221f1f))
- **i18n:** use useMessages() for tutorial translations ([95b0105](https://github.com/antialias/soroban-abacus-flashcards/commit/95b0105ca3b28c5adfa843e8d77a8b27d9e7ade4))
- increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf))
- Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26))
- **levels:** add fixed dimensions and margins to kyu detail boxes ([05dd0b3](https://github.com/antialias/soroban-abacus-flashcards/commit/05dd0b30d3c397b82b7b7cc93a5ea575f3aada6d))
- **levels:** add smooth CSS transitions for slider thumb movement ([ca8cef1](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8cef1c36efeb1c8c214c74f8bd383f9295be3b))
- **levels:** adjust slider text positioning to prevent emoji overlap ([e5ffe39](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ffe3927edfb1baea7ddd216507e081f50e5d2c))
- **levels:** improve slider tick spacing to use full width ([1e90d6c](https://github.com/antialias/soroban-abacus-flashcards/commit/1e90d6c6207f29084a8dc96ccfbb1013a1a62271))
- **levels:** increase animation speed to 10ms for 10th Dan ([6f89d9e](https://github.com/antialias/soroban-abacus-flashcards/commit/6f89d9e274082908fc090a9c0ba310f2cb06f014))
- **levels:** match top/bottom margins to left padding on kyu detail boxes ([aa0bdcf](https://github.com/antialias/soroban-abacus-flashcards/commit/aa0bdcf686adcbfd1a145cf67121181d1f1194d9))
- **levels:** reduce operator box sizes and remove divider line ([29d20a6](https://github.com/antialias/soroban-abacus-flashcards/commit/29d20a6c0741e7427f2bb64bc9c3e950b1a3238a))
- **levels:** use two-column grid for kyu details to prevent clipping ([fa3b73c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa3b73c69169b4694201ffa19ae3f8b5a68dfe32))
- **levels:** use uniform padding on operator box grid ([2818fd1](https://github.com/antialias/soroban-abacus-flashcards/commit/2818fd15cacac78de6d86ba769b9b2a02800ed1e))
- **mobile:** optimize Your Journey section for iPhone displays ([9167fb4](https://github.com/antialias/soroban-abacus-flashcards/commit/9167fb40d68b7bdbe310b647083586434ceb6043))
- **mobile:** reduce height of Your Journey section on mobile ([8944035](https://github.com/antialias/soroban-abacus-flashcards/commit/89440355bf494e54072d2d1a1f228c33ec43d52d))
- **mobile:** restore abacus visibility in "Your Journey" section ([c96036d](https://github.com/antialias/soroban-abacus-flashcards/commit/c96036d86b6de2e25f7ecd3d00dd36221badc3b1))
- **navbar:** apply glassmorphism to transparent mode, not scrolled mode ([8893675](https://github.com/antialias/soroban-abacus-flashcards/commit/8893675b36b1c1534c6fe7e57fa7e0cc55f198d6))
- **navbar:** remove border artifact and add 10px bottom fade ([d5f60ce](https://github.com/antialias/soroban-abacus-flashcards/commit/d5f60ce9d2fbc2a870b3bb96f5365a0e04e0afc4))
- **nav:** ensure nav bar appears above tutorial tooltips ([cc31564](https://github.com/antialias/soroban-abacus-flashcards/commit/cc315645de30218d1b034da3e130458fe2961a69))
- **nav:** prevent thrashing by using fixed position always ([eff44b3](https://github.com/antialias/soroban-abacus-flashcards/commit/eff44b3ad1ea0535c6965ad58012f9275cb143ec))
- **nav:** remove unnecessary borders from transparent nav ([8c2ddca](https://github.com/antialias/soroban-abacus-flashcards/commit/8c2ddca28dbdd7743227eed4d19a9a8f662a72b5))
- **qr-button:** improve layout and z-index ([646a422](https://github.com/antialias/soroban-abacus-flashcards/commit/646a4228d0573796b1a429e31bc037411024c0ff))
- **qr-button:** increase mini QR code size to 80px ([61ac737](https://github.com/antialias/soroban-abacus-flashcards/commit/61ac7378bdb01132b26bfc265a057c095ea41606))
- **qr-button:** increase mini QR code to 84px ([3fae5ea](https://github.com/antialias/soroban-abacus-flashcards/commit/3fae5ea6fa9ebd0f8fe8c9140a027be7f6a041aa))
- **qr-button:** make button square and increase QR size ([dc2d466](https://github.com/antialias/soroban-abacus-flashcards/commit/dc2d46663b8e0ec94a1508a57c4f8c2d8ba03506))
- **qr-button:** match height of stacked buttons ([81f202d](https://github.com/antialias/soroban-abacus-flashcards/commit/81f202d21556aa430402fda814519adbc8883831))
- **rithmomachia:** add missing i18next dependencies ([91154d9](https://github.com/antialias/soroban-abacus-flashcards/commit/91154d93647e59f7e5f96d1db5624a7ec9b1b9ff))
- **rithmomachia:** add missing pyramid section keys to Japanese (ja.json) ([dae615e](https://github.com/antialias/soroban-abacus-flashcards/commit/dae615ee72a7ec7d0b235a22c61ebc4af0d8eadb))
- **rithmomachia:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093))
- **rithmomachia:** adjust roster notice position to not overlap nav ([7093223](https://github.com/antialias/soroban-abacus-flashcards/commit/709322373a91c8174d21052d184fa84dd8bda326))
- **rithmomachia:** change undock icon to pop-out arrow ([2a91748](https://github.com/antialias/soroban-abacus-flashcards/commit/2a917484938bc269cf16acb501d4d26584405e0f))
- **rithmomachia:** correct board dimensions to 16x8 and restore original layout values ([cfac277](https://github.com/antialias/soroban-abacus-flashcards/commit/cfac27750526fb1f6a7e4314a96aab3b92e08e44))
- **rithmomachia:** Correct board setup to match reference image exactly ([618e563](https://github.com/antialias/soroban-abacus-flashcards/commit/618e56358deb66cba968472f39b8d4e28b4dd211))
- **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b))
- **rithmomachia:** fix guide modal resize drift by calculating from initial state ([1bcd99c](https://github.com/antialias/soroban-abacus-flashcards/commit/1bcd99c949e4d2b4fb1c0813debd50176fa58cb9))
- **rithmomachia:** fix harmony section translation structure for hi/ja/es ([14259a1](https://github.com/antialias/soroban-abacus-flashcards/commit/14259a19a9817d0947467faa004d5f43118f8d8d))
- **rithmomachia:** fix modal resizing zoom issue ([4fa20f4](https://github.com/antialias/soroban-abacus-flashcards/commit/4fa20f44cb9758f29d1f1512232be0fdc0b53b3d))
- **rithmomachia:** Fix TypeScript errors in playing guide modal ([4834ece](https://github.com/antialias/soroban-abacus-flashcards/commit/4834ece98e86f2fb00511bb876a5c32c289df0e0))
- **rithmomachia:** handle pyramid pieces in hover error tooltip ([56f3164](https://github.com/antialias/soroban-abacus-flashcards/commit/56f3164155beb94ceec2838bed9fc74fd75524db))
- **rithmomachia:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7))
- **rithmomachia:** improve guide modal tab navigation at narrow widths ([a673177](https://github.com/antialias/soroban-abacus-flashcards/commit/a673177bec1c709463ce0f266848f473a79f4ef0))
- **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a))
- **rithmomachia:** render guide as docked in preview panel ([190f8cf](https://github.com/antialias/soroban-abacus-flashcards/commit/190f8cf302aa966f029d05931811e217c67bfe39))
- **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138))
- **rithmomachia:** show guest-friendly message when they can't fix too many players ([54bfd2f](https://github.com/antialias/soroban-abacus-flashcards/commit/54bfd2fac86be3597d40c67a1235e4c4ed8e2709))
- **rithmomachia:** smooth guide dragging from docked state without jump ([8f4a79c](https://github.com/antialias/soroban-abacus-flashcards/commit/8f4a79c9b0cad55336584fdc8e67409015d3a8ae))
- **rithmomachia:** validate move path before showing capture error on hover ([bd49964](https://github.com/antialias/soroban-abacus-flashcards/commit/bd49964186a0daa1639ae849b128a76081643daf))
- **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071))
- **types:** properly type HomeHeroContext in AppNavBar ([f9a7cb7](https://github.com/antialias/soroban-abacus-flashcards/commit/f9a7cb7f05dfddf291d89212a77ba1c11c00c9c7))
### Features
- **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c))
- add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc))
- add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405))
- add vibrant gradients and equal heights to game cards ([a1a135a](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a135a8586e314c9d695bec6c4e58ec24e5c9cb)), closes [#4](https://github.com/antialias/soroban-abacus-flashcards/issues/4) [#00f2](https://github.com/antialias/soroban-abacus-flashcards/issues/00f2) [#667](https://github.com/antialias/soroban-abacus-flashcards/issues/667) [#764ba2](https://github.com/antialias/soroban-abacus-flashcards/issues/764ba2) [#f093](https://github.com/antialias/soroban-abacus-flashcards/issues/f093) [#f5576](https://github.com/antialias/soroban-abacus-flashcards/issues/f5576) [#43e97](https://github.com/antialias/soroban-abacus-flashcards/issues/43e97) [#38f9d7](https://github.com/antialias/soroban-abacus-flashcards/issues/38f9d7)
- **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb))
- **arcade:** add native abacus numbers support to pressure gauge ([1d525c7](https://github.com/antialias/soroban-abacus-flashcards/commit/1d525c7b5320984a1582b8ab7eae57895c728428))
- **arcade:** add Rithmomachia (Battle of Numbers) game ([2fc0a05](https://github.com/antialias/soroban-abacus-flashcards/commit/2fc0a05f7f557cee55f7d31b585499dd04e68ff9))
- **arcade:** add yjs-demo collaborative game and Yjs persistence layer ([d568955](https://github.com/antialias/soroban-abacus-flashcards/commit/d568955d6abf389e6ab7c6979e33122a65917a46))
- **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04))
- **branding:** rebrand navigation from 'Soroban Generator' to 'Abaci One' ([cce8980](https://github.com/antialias/soroban-abacus-flashcards/commit/cce8980e177da1b3c344e46561d928ed98b86f6c))
- **card-sorting:** add activity feed notifications for collaborative mode ([1461414](https://github.com/antialias/soroban-abacus-flashcards/commit/1461414ef4d0b213af241213447c91eed1abe5fb))
- **card-sorting:** add auto-submit countdown for perfect sequences ([780a716](https://github.com/antialias/soroban-abacus-flashcards/commit/780a7161bc05c2ca6597d7d8d89f01afd33d9f4d))
- **card-sorting:** add bezier curves to connecting arrows ([4d8e873](https://github.com/antialias/soroban-abacus-flashcards/commit/4d8e873358271fe3fd50b228aea8277e20aa5966))
- **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d))
- **card-sorting:** add collapsible stats sidebar for spectators ([6527c26](https://github.com/antialias/soroban-abacus-flashcards/commit/6527c26a8166b23f074e85eb335a15800c1947a2))
- **card-sorting:** add game mode selector UI to setup phase ([d25b888](https://github.com/antialias/soroban-abacus-flashcards/commit/d25b888ffb3915d2d482442ab708ba3e159af512))
- **card-sorting:** add GameMode type system for multiplayer support ([fd76533](https://github.com/antialias/soroban-abacus-flashcards/commit/fd765335efbc91366c596c7789b92882cd3379d9))
- **card-sorting:** add green border to correctly positioned cards ([16fca86](https://github.com/antialias/soroban-abacus-flashcards/commit/16fca86b7687115f1cf565c533a512e92946e3a8)), closes [#22c55](https://github.com/antialias/soroban-abacus-flashcards/issues/22c55)
- **card-sorting:** add player emoji indicators on moving cards ([3a82099](https://github.com/antialias/soroban-abacus-flashcards/commit/3a8209975728cdcf914c43ba08339454a9e2457f))
- **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115))
- **card-sorting:** add smooth transition to drop shadow ([b0b93d0](https://github.com/antialias/soroban-abacus-flashcards/commit/b0b93d0175c8a1c8958d6ba346d969c234fdd6ff))
- **card-sorting:** add spectator mode UI enhancements ([ee7345d](https://github.com/antialias/soroban-abacus-flashcards/commit/ee7345d641e0ee72915afb9cdbd6d284b7e238bd)), closes [#6366f1](https://github.com/antialias/soroban-abacus-flashcards/issues/6366f1) [#8b5cf6](https://github.com/antialias/soroban-abacus-flashcards/issues/8b5cf6)
- **card-sorting:** add team scoring UI for collaborative mode ([ed6f177](https://github.com/antialias/soroban-abacus-flashcards/commit/ed6f1779141d0bc9dff2d532a3dfc638015936b5)), closes [#a78](https://github.com/antialias/soroban-abacus-flashcards/issues/a78) [#8b5cf6](https://github.com/antialias/soroban-abacus-flashcards/issues/8b5cf6)
- **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0))
- **card-sorting:** auto-arrange prefix/suffix cards in corners ([4ba7f24](https://github.com/antialias/soroban-abacus-flashcards/commit/4ba7f247175d93e4d339e2be7bbdb2e009992232))
- **card-sorting:** fade correctly positioned cards to 50% opacity ([7028cfc](https://github.com/antialias/soroban-abacus-flashcards/commit/7028cfc51164e9219479e6040b03c29239aa7edb))
- **card-sorting:** gentler spring animation for locked cards ([47189cb](https://github.com/antialias/soroban-abacus-flashcards/commit/47189cb6e79ed2915f5ddcc9cb3626540dfb07f3))
- **card-sorting:** implement continuous bezier curve paths ([2d93024](https://github.com/antialias/soroban-abacus-flashcards/commit/2d9302410f5e98145a435b00df3ae5fcf3f4c0b5))
- **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329))
- **card-sorting:** make player emoji fill entire card background ([2e7a02c](https://github.com/antialias/soroban-abacus-flashcards/commit/2e7a02c9e4ab84e821d58661d6e7a326f7882afb))
- **card-sorting:** optimize results screen for mobile ([d188789](https://github.com/antialias/soroban-abacus-flashcards/commit/d188789069b4c350ce3cc0d221bd4a43dab528e0))
- **card-sorting:** redesign setup screen with modern UI ([73cf967](https://github.com/antialias/soroban-abacus-flashcards/commit/73cf96749234c480482f62392245b38c1fd5f0a0))
- **card-sorting:** scale correctly positioned cards to 50% ([222dc55](https://github.com/antialias/soroban-abacus-flashcards/commit/222dc555fa5068e2594dcc074e33f70320f5742c))
- **card-sorting:** shrink/fade cards in correct suffix as well ([8f6feec](https://github.com/antialias/soroban-abacus-flashcards/commit/8f6feec4f21d0af0d1c98daf5017eddd91d3d578))
- **card-sorting:** smooth spring transition from game table to results grid ([c5f39d5](https://github.com/antialias/soroban-abacus-flashcards/commit/c5f39d51eb45ec816f32151dc7f9d7c06360474b))
- **card-sorting:** wrap prefix/suffix cards to multiple rows ([e3184dd](https://github.com/antialias/soroban-abacus-flashcards/commit/e3184dd0d444e5dc204731f5b396d5c553cf7d11))
- **complement-race:** add ghost trains for multiplayer visibility ([7668cc9](https://github.com/antialias/soroban-abacus-flashcards/commit/7668cc9b113b3eae2acb1b852b0ad48c979e6604))
- **complement-race:** add react-spring animations to ghost trains for smooth movement ([eb3700a](https://github.com/antialias/soroban-abacus-flashcards/commit/eb3700a57d035a142c64b60d5d1b21181d21b69f))
- **complement-race:** implement per-car adaptive opacity for ghost trains ([9b1d47d](https://github.com/antialias/soroban-abacus-flashcards/commit/9b1d47d4c7bdaf44f3921ff99971dfb3b65442bd))
- **complement-race:** implement position broadcasting for ghost trains ([c5fba5b](https://github.com/antialias/soroban-abacus-flashcards/commit/c5fba5b7dd0f36fd3bbe596409e01b0d3dbd4fbe))
- **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29))
- **flashcards:** add dynamic shadow based on drag speed ([92148a4](https://github.com/antialias/soroban-abacus-flashcards/commit/92148a4cf87e828ba2e5ec1740fb51d9667c1d73))
- **flashcards:** add grab point physics for realistic rotation ([bf37eb1](https://github.com/antialias/soroban-abacus-flashcards/commit/bf37eb1928de8d07673234e2faa1fa6268c45686))
- **flashcards:** enable unbounded drag and position persistence ([ad1ad69](https://github.com/antialias/soroban-abacus-flashcards/commit/ad1ad690f014257b5a3c3f599e794205a11d286f))
- **hero:** persist random subtitle per-session ([318f946](https://github.com/antialias/soroban-abacus-flashcards/commit/318f9469a0805c200c55ce4024a95fd7b8dbe6a2))
- **homepage:** add full-page hero abacus with scroll-based nav transition ([d8ec642](https://github.com/antialias/soroban-abacus-flashcards/commit/d8ec64280ec0c2f44f2fd9c72a93a882481f650b))
- **homepage:** add interactive draggable flashcards with physics ([0744883](https://github.com/antialias/soroban-abacus-flashcards/commit/074488349a3ec480548223c313006aa1e9e64e5c))
- **homepage:** add interactive draggable flashcards with physics ([e711c52](https://github.com/antialias/soroban-abacus-flashcards/commit/e711c527574412de2f9d451c7985c4f8667d269a))
- **homepage:** add interactive learning panels with animated mini-tutorials ([76d6f19](https://github.com/antialias/soroban-abacus-flashcards/commit/76d6f19d51fe4b9594998ae4e0a8823aff389854))
- **homepage:** add interactive levels slider to replace static progression ([8a2d5ae](https://github.com/antialias/soroban-abacus-flashcards/commit/8a2d5ae319af8fd66010dd5538e4b82f7fb35d40))
- **homepage:** create fancy flashcard display with spread-out cards ([cd30944](https://github.com/antialias/soroban-abacus-flashcards/commit/cd30944c5e067f84d00dfdf41c37580acc589548))
- **homepage:** emphasize single-player and observer modes ([a537bc1](https://github.com/antialias/soroban-abacus-flashcards/commit/a537bc18c34d94ca931e483ea01e497d6f5d4e5b))
- **homepage:** increase hero abacus size for better visibility ([7666b0a](https://github.com/antialias/soroban-abacus-flashcards/commit/7666b0aea949f2432a4d0f4648c1a366af3ea6d2))
- **homepage:** make skills section responsive with emojis ([9ec0a71](https://github.com/antialias/soroban-abacus-flashcards/commit/9ec0a71546ee483233ed7866dae97345bf2384d7))
- **homepage:** significantly increase mobile hero abacus size ([424f41d](https://github.com/antialias/soroban-abacus-flashcards/commit/424f41d4bfc1ddea068f8c110b495ebd5c0bb455))
- **homepage:** update section title to "The Arcade" ([f47b172](https://github.com/antialias/soroban-abacus-flashcards/commit/f47b172f66bee0017c11d8f129f5b83f2ef3dcd9))
- **i18n:** add dynamic locale switching without page reload ([fe9bfea](https://github.com/antialias/soroban-abacus-flashcards/commit/fe9bfeabf9ee66923501b18e1b69f2d666d0817d))
- **i18n:** add global language selector to navigation ([0506360](https://github.com/antialias/soroban-abacus-flashcards/commit/0506360117807665e8f5a6fcd8f1178339f6e65c))
- **i18n:** add homepage translations for all supported languages ([8c9d35a](https://github.com/antialias/soroban-abacus-flashcards/commit/8c9d35a3b43dd29664f5afb1bd96c4e584d9ec75))
- **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6))
- **i18n:** complete Old High German translations for all locales ([0b06a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/0b06a1ce005d92e7ae9c225aba40d240e965753d))
- **i18n:** internationalize games page and tutorial content ([4253964](https://github.com/antialias/soroban-abacus-flashcards/commit/4253964af19f9aaa16f2394f41819223542fb519))
- **i18n:** internationalize homepage with English translations ([40cff14](https://github.com/antialias/soroban-abacus-flashcards/commit/40cff143c72e9228d7cce607cab64c4a6d067017))
- **i18n:** migrate from react-i18next to next-intl ([9016b76](https://github.com/antialias/soroban-abacus-flashcards/commit/9016b760247a20271255839e4dd7e5b9a8353b9f))
- internationalize guide page with 6 languages ([e9c320b](https://github.com/antialias/soroban-abacus-flashcards/commit/e9c320bb1032e94c3852b9459236409da4669c09))
- internationalize tutorial player ([26d41cf](https://github.com/antialias/soroban-abacus-flashcards/commit/26d41cfd058bfdf5b61ee6e20cfc61cbecb32f45))
- **levels:** add animated calculation effect to abacus display ([4f4c735](https://github.com/antialias/soroban-abacus-flashcards/commit/4f4c73577a944518c093b3208a85482909fe3064))
- **levels:** add auto-advance slider with hover pause ([41eaed2](https://github.com/antialias/soroban-abacus-flashcards/commit/41eaed24fce510bab7fd03fa2e39e829b33a7346))
- **levels:** add hover tracking to slider for real-time level preview ([477a0b3](https://github.com/antialias/soroban-abacus-flashcards/commit/477a0b367e32749b865b5a5405846e86d5bcef6a))
- **levels:** add kyu level details display with English translations ([c650ffa](https://github.com/antialias/soroban-abacus-flashcards/commit/c650ffa1935fe370d37190b2843c0deecdcce8e7))
- **levels:** add structured kyu exam details with card UI ([6501b07](https://github.com/antialias/soroban-abacus-flashcards/commit/6501b073b100a00982cff1ca3140921e74f31a9c))
- **levels:** make emoji tick marks clickable and remove redundant UI ([07c783a](https://github.com/antialias/soroban-abacus-flashcards/commit/07c783a79454f50e7302b19684be6d2e5930154d))
- **levels:** progressive animation speed for Dan levels ([9dff3e7](https://github.com/antialias/soroban-abacus-flashcards/commit/9dff3e7b7b1ca46ea7f19a48135124b80c5182c0))
- **levels:** redesign kyu details with larger operators and prominent digits ([6739d59](https://github.com/antialias/soroban-abacus-flashcards/commit/6739d59f2b6189a98570e23e04c20d86d774ccce))
- **levels:** right-align abacus display ([8681b17](https://github.com/antialias/soroban-abacus-flashcards/commit/8681b17340e757cf04d17f884a780a251645bb33))
- **nav:** add transparent nav bar with borders when hero visible ([463841e](https://github.com/antialias/soroban-abacus-flashcards/commit/463841e1910f4ddb9af662f036e4efb867836a83))
- **navbar:** add glassmorphism effect to nav links when scrolled ([89b9072](https://github.com/antialias/soroban-abacus-flashcards/commit/89b90723b7a3fc9ed12da3ba8718fccb6ce0760f))
- optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea))
- Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c))
- **rithmomachia:** add 80% opacity to guide modal when not hovered ([4a78485](https://github.com/antialias/soroban-abacus-flashcards/commit/4a78485d2e20f2cbf36cc898a1beafa8eb48bfbf))
- **rithmomachia:** add CaptureContext for capture dialog state management ([d7eb957](https://github.com/antialias/soroban-abacus-flashcards/commit/d7eb957a8dabbcac35e166a83dd679a628e19baa))
- **rithmomachia:** add ghost panel preview for guide docking ([c0d6526](https://github.com/antialias/soroban-abacus-flashcards/commit/c0d6526d30aca8deaeda2b7c2e27eb37af8b577c))
- **rithmomachia:** add guide docking with resizable panels ([f457f1a](https://github.com/antialias/soroban-abacus-flashcards/commit/f457f1a1c22b6cb7fff23a7701474322cf423dd9))
- **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed))
- **rithmomachia:** add helpful error messages for failed captures ([b172440](https://github.com/antialias/soroban-abacus-flashcards/commit/b172440a41e958ced98903bb8f4c2e4b423e1356))
- **rithmomachia:** add initial board visual to guide Overview section ([d42bcff](https://github.com/antialias/soroban-abacus-flashcards/commit/d42bcff0d922895549c1c12f8e02a3ae6d53425a))
- **rithmomachia:** Add interactive playing guide modal ([3121d82](https://github.com/antialias/soroban-abacus-flashcards/commit/3121d8240a567817f5f205a4ef4a788fcf451f71))
- **rithmomachia:** add number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e))
- **rithmomachia:** add ratio capture example to guide ([9150b0c](https://github.com/antialias/soroban-abacus-flashcards/commit/9150b0c678ce7104fe984ee0fc93748b43a245f4))
- **rithmomachia:** add standalone guide page route ([3fcc79f](https://github.com/antialias/soroban-abacus-flashcards/commit/3fcc79fe9eae11d4bd3a724c1b1f7d086e7cae81))
- **rithmomachia:** add useBoardLayout hook for centralized layout calculations ([27f1c98](https://github.com/antialias/soroban-abacus-flashcards/commit/27f1c989d59a19844b90a5148ae27fb97161da2d))
- **rithmomachia:** add usePieceSelection hook for selection state management ([275f401](https://github.com/antialias/soroban-abacus-flashcards/commit/275f401e3c25b75fec4700a8c2d4be6e33f0afe9))
- **rithmomachia:** add visual board examples to Capture section ([74bc3c0](https://github.com/antialias/soroban-abacus-flashcards/commit/74bc3c0dcf8d1ee7084e88a04861a85f9b623809))
- **rithmomachia:** add visual board examples to Harmony section ([1d5f01c](https://github.com/antialias/soroban-abacus-flashcards/commit/1d5f01c966cf1eec9a9c19ee37f1cad93c89df40))
- **rithmomachia:** add visual winning example to Victory section ([b7fac78](https://github.com/antialias/soroban-abacus-flashcards/commit/b7fac788292e00c6060a47fdbcca89a7e7fee35c))
- **rithmomachia:** auto-size tab labels with react-textfit ([9fd5406](https://github.com/antialias/soroban-abacus-flashcards/commit/9fd54067ce257e028b02f4784568ff3f2bbb32ca))
- **rithmomachia:** cycle through valid helpers with dynamic number tooltips ([4829e41](https://github.com/antialias/soroban-abacus-flashcards/commit/4829e41ea13fae2edec10837e65e505929445782))
- **rithmomachia:** enhance capture relation UI with smooth animations ([0a30801](https://github.com/antialias/soroban-abacus-flashcards/commit/0a308016e9d6a926c52dbfc5623b60b169d16d03))
- **rithmomachia:** enhance Harmony section with comprehensive content ([f555856](https://github.com/antialias/soroban-abacus-flashcards/commit/f5558563ea93ef7428aa220c2e15e3f02711420f))
- **rithmomachia:** enhance Pieces section with visual examples and pyramid details ([55aff82](https://github.com/antialias/soroban-abacus-flashcards/commit/55aff829f4c284e8cfe6d471c0821575928b93bc))
- **rithmomachia:** enhance Pyramid section with comprehensive details ([9fde1ef](https://github.com/antialias/soroban-abacus-flashcards/commit/9fde1ef9e703e26b2450128155b53fdf2d2e1fe5))
- **rithmomachia:** guide defaults to docked right on open ([11f674d](https://github.com/antialias/soroban-abacus-flashcards/commit/11f674d542ea5e4e88bd60ff1068451805d9766e))
- **rithmomachia:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9))
- **rithmomachia:** improve guide UX and add persistence ([b314740](https://github.com/antialias/soroban-abacus-flashcards/commit/b31474069734350a7059cd7c73255a7e11b78eb9))
- **rithmomachia:** improve roster status notice UX ([e27df45](https://github.com/antialias/soroban-abacus-flashcards/commit/e27df45256147f958ca215f9dd1f4e133e8cf06c))
- **rithmomachia:** integrate roster warning into game nav ([8a11594](https://github.com/antialias/soroban-abacus-flashcards/commit/8a11594203fb91faee6cbc4cb74367164ecd6d85))
- **rithmomachia:** make guide modal ultra-responsive down to 150px width ([0474197](https://github.com/antialias/soroban-abacus-flashcards/commit/04741971b296976f4476ecd949e84066fc549010))
- **rithmomachia:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67))
- **rithmomachia:** show capture error on hover instead of click ([339b678](https://github.com/antialias/soroban-abacus-flashcards/commit/339b6780f657ace5bfe1611c4ef64bb0c2c31587))
- **rithmomachia:** show pyramid face numbers on hover instead of selection ([b0c4523](https://github.com/antialias/soroban-abacus-flashcards/commit/b0c4523c0b4669c96a50b2812ba6cb2faa3f9a22))
- **rithmomachia:** show pyramid face numbers when selected ([5c186f3](https://github.com/antialias/soroban-abacus-flashcards/commit/5c186f3947cc38f1f5db5de3e68e590b90c2d092))
- **rithmomachia:** show pyramid face numbers when selected with subtle animation ([5c2ddbe](https://github.com/antialias/soroban-abacus-flashcards/commit/5c2ddbef05d7f4195d21b084cb1c0c4193ee3c9c))
- **rithmomachia:** show real preview layout when dragging guide to dock ([17d2460](https://github.com/antialias/soroban-abacus-flashcards/commit/17d2460a8769a21d33fabc5f909cf5b939712d36))
- **rithmomachia:** simplify guide language for clarity ([85cb630](https://github.com/antialias/soroban-abacus-flashcards/commit/85cb630add395a6693ecbbe9c8fc6aaf8c47be29))
- **rithmomachia:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c))
- **rithmomachia:** Update harmony system to classical three-piece proportions ([08c9762](https://github.com/antialias/soroban-abacus-flashcards/commit/08c97620f5e694b8526c448c44d265e6dd1fe1eb))
- **rithmomachia:** Update to traditional board setup with 25 pieces per side ([0769eaa](https://github.com/antialias/soroban-abacus-flashcards/commit/0769eaaa1dc238b901e3a7cfe0486e6122d5eda9))
- **rithmomachia:** use actual piece SVGs in number bond with 2.5s rotation animation ([976a7de](https://github.com/antialias/soroban-abacus-flashcards/commit/976a7de949c22842f4b6da3ced990f502a1c2733))
- **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9))
- show rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df))
### Performance Improvements
- **levels:** speed up slider animations for more responsive feel ([1e5467f](https://github.com/antialias/soroban-abacus-flashcards/commit/1e5467fad4e27b832300c49b4f73547dc47598b0))
- optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02))
### Reverts
- **card-sorting:** remove auto-positioning and locked card features ([23725ca](https://github.com/antialias/soroban-abacus-flashcards/commit/23725ca24b78421100566f0f9fd56703f885d1bb))
- **navbar:** remove bottom fade gradient ([6e5aec8](https://github.com/antialias/soroban-abacus-flashcards/commit/6e5aec858f87fad33ec3244ec00b0eddae829d03))
# [2.1.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.0.0...abacus-react-v2.1.0) (2025-10-20)
### Bug Fixes
- **levels:** add fixed height to entire level display pane ([200b26c](https://github.com/antialias/soroban-abacus-flashcards/commit/200b26c2cd35d1d637ede9dcfc3dbbc7f3f19320))
- **levels:** increase container height to prevent abacus clipping ([cd5c15a](https://github.com/antialias/soroban-abacus-flashcards/commit/cd5c15aeb260c568fe7ad9b6a4f51c4d6498b2b8))
- **levels:** only animate abacus, not container with background/border ([c80477d](https://github.com/antialias/soroban-abacus-flashcards/commit/c80477d24877ddada5f3f4405abbf05e1d753b5d))
- **levels:** reduce Dan scale and container height to prevent clipping ([563136f](https://github.com/antialias/soroban-abacus-flashcards/commit/563136fb79fa10b2af3a119bf0f861e3b0812b2e))
- **levels:** reduce max scale factor to allow more compact container ([ead9ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/ead9ee9589aa4d7376e9385da5da53a6b444858a))
- **levels:** reduce scale factor variation to minimize margin differences ([abb647c](https://github.com/antialias/soroban-abacus-flashcards/commit/abb647ce40b8f9d0c8268ab18c139324ae3195c5))
- **levels:** revert delayed column change, keep overflow hidden ([22f00f5](https://github.com/antialias/soroban-abacus-flashcards/commit/22f00f59f5facc36a846408dcd196ec54ea676b1))
- **levels:** stabilize slider position and prevent abacus clipping ([09004dc](https://github.com/antialias/soroban-abacus-flashcards/commit/09004dc2c055031ee2f71c964ceee6f7b1d42ecd))
### Features
- **abacus-react:** export StandaloneBead component wired to AbacusDisplayContext ([0146ce1](https://github.com/antialias/soroban-abacus-flashcards/commit/0146ce1e67da27a24cbaa8338ba6a1a6befd6bd3))
- **levels:** add hover interaction and smooth React Spring transitions ([fd2b633](https://github.com/antialias/soroban-abacus-flashcards/commit/fd2b6338a84c3bbc683eff216a8da3b155749f0f))
- **levels:** redesign slider with abacus-themed beads ([f3dce84](https://github.com/antialias/soroban-abacus-flashcards/commit/f3dce84532fa706e4ec9551facde2055a060ee13))
- **levels:** replace slider thumb with diamond-shaped abacus beads ([0fbde53](https://github.com/antialias/soroban-abacus-flashcards/commit/0fbde53039d3ea000c6a3be492b733479e7bf47c))
# [2.0.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.8.0...abacus-react-v2.0.0) (2025-10-20)
### Bug Fixes
- add dark color for abacus numerals ([73ff32c](https://github.com/antialias/soroban-abacus-flashcards/commit/73ff32c2432beb62710e57aa8b3b4793eca43fda)), closes [#1f2937](https://github.com/antialias/soroban-abacus-flashcards/issues/1f2937)
- add POST handler for join requests API endpoint ([d3e5cdf](https://github.com/antialias/soroban-abacus-flashcards/commit/d3e5cdfc54f2749f27c6f8b8db854a8d0b6029f8))
- add Typst to Docker image for flashcard generation ([d9a7694](https://github.com/antialias/soroban-abacus-flashcards/commit/d9a769403187bf70fb069be7ffe77417a62271a5))
- allow join with pending invitation for restricted rooms ([85b2cf9](https://github.com/antialias/soroban-abacus-flashcards/commit/85b2cf98167ccf632ab634a94eb436e1eb584614))
- allow password retry when joining via share link ([e469363](https://github.com/antialias/soroban-abacus-flashcards/commit/e469363699071610a35e0b5c507d0e15e29daa44))
- **api:** add 'math-sprint' to settings endpoint validation ([d790e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/d790e5e278f81686077dbe3ef4adca49574ae434)), closes [#1](https://github.com/antialias/soroban-abacus-flashcards/issues/1)
- **api:** include members and memberPlayers in room creation response ([8320d9e](https://github.com/antialias/soroban-abacus-flashcards/commit/8320d9e730e2b9964e509847dfa504a78b721b5a))
- **arcade-rooms:** navigate to invite link after room creation ([1922b21](https://github.com/antialias/soroban-abacus-flashcards/commit/1922b2122bb1bc4aeada7526d8c46aa89024bb00))
- **arcade:** add defensive checks and update test fixtures ([a93d981](https://github.com/antialias/soroban-abacus-flashcards/commit/a93d981d1ab3abed019b28cebe87525191313cc7))
- **arcade:** add host-only game selection with clear messaging ([22df1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/22df1b0b661efe69fac1a6bd716531c904757412))
- **arcade:** add host-only game selection with clear messaging ([c0680ca](https://github.com/antialias/soroban-abacus-flashcards/commit/c0680cad0fa26af0933e93a06c50317bf443cc7d))
- **arcade:** add Number Guesser to game config helpers ([7d1a351](https://github.com/antialias/soroban-abacus-flashcards/commit/7d1a351ed6a1442ae34f6b75d46039bfa77a921b))
- **arcade:** allow room creator to rejoin restricted/approval rooms ([654ba19](https://github.com/antialias/soroban-abacus-flashcards/commit/654ba19ccca595d34ad205c036c18afb99a494c7))
- **arcade:** delete old session when room game changes ([98a3a25](https://github.com/antialias/soroban-abacus-flashcards/commit/98a3a2573db51899c41ba02796895d676c4e16ef))
- **arcade:** implement settings persistence for matching game ([08fe432](https://github.com/antialias/soroban-abacus-flashcards/commit/08fe4326a6a7c484b9058a241f4ff79b3fb5125f))
- **arcade:** only notify room creator of join requests ([bc571e3](https://github.com/antialias/soroban-abacus-flashcards/commit/bc571e3d0d11fe4142680132d551e25ca626d950))
- **arcade:** preserve game settings when returning to game selection ([0ee7739](https://github.com/antialias/soroban-abacus-flashcards/commit/0ee7739091d60580d2f98cfe288b8586b03348f3))
- **arcade:** preserve gameConfig when switching games ([2273c71](https://github.com/antialias/soroban-abacus-flashcards/commit/2273c71a872a5122d0b2023835fe30640106048e))
- **arcade:** prevent empty update in settings API when only gameConfig changes ([ffb626f](https://github.com/antialias/soroban-abacus-flashcards/commit/ffb626f4038fd32d0f40dba8d83ae4d881d698d0))
- **arcade:** prevent gameConfig from being overwritten when switching games ([a89d3a9](https://github.com/antialias/soroban-abacus-flashcards/commit/a89d3a970137471e2652de992c45370dbb97416d))
- **arcade:** prevent server-side loading of React components ([784793b](https://github.com/antialias/soroban-abacus-flashcards/commit/784793ba244731edf45391da44588a978b137abe))
- **arcade:** read nested gameConfig correctly when creating sessions ([94ef392](https://github.com/antialias/soroban-abacus-flashcards/commit/94ef39234d362b82e032cb69d3561b9fcb436eaf))
- **arcade:** remove broken query param from game URLs ([87631af](https://github.com/antialias/soroban-abacus-flashcards/commit/87631af6788bd7b42e671374e55ec0ad8435900c))
- **arcade:** remove legacy master-organizer placeholder ([76d207e](https://github.com/antialias/soroban-abacus-flashcards/commit/76d207e2e5244f84bc0d76fe3d753034f1991228))
- **arcade:** resolve TypeScript errors in game config helpers ([04c9944](https://github.com/antialias/soroban-abacus-flashcards/commit/04c9944f2ed1025f5a4ece61761889edd08cc60d))
- **build:** resolve Docker build failures preventing deployment ([7801dbb](https://github.com/antialias/soroban-abacus-flashcards/commit/7801dbb25fb0a33429c70f11294264f7238ce7a4))
- **card-sorting:** center AbacusReact SVGs in card tiles ([26edec1](https://github.com/antialias/soroban-abacus-flashcards/commit/26edec1bbf038264405ec9d161edcd18f67a6fc6))
- **card-sorting:** faithfully port UI/UX from Python original ([c92076f](https://github.com/antialias/soroban-abacus-flashcards/commit/c92076f232930aa12d9a0230fa745b73b5cc04d9)), closes [#2c5f76](https://github.com/antialias/soroban-abacus-flashcards/issues/2c5f76) [#1976d2](https://github.com/antialias/soroban-abacus-flashcards/issues/1976d2)
- **card-sorting:** increase card tile sizes to contain abacuses ([d2a3b7a](https://github.com/antialias/soroban-abacus-flashcards/commit/d2a3b7ae2e3f6819b8d9ace32be22f04f748d1bc))
- **card-sorting:** increase SVG size to fill card containers ([cf9d893](https://github.com/antialias/soroban-abacus-flashcards/commit/cf9d893f3fdbef6e91cd0ba283d602b9215569f1))
- **card-sorting:** match game selector background to other games ([db62519](https://github.com/antialias/soroban-abacus-flashcards/commit/db62519f9beb0b4bc6120e1fd5ec251cfde5c3c1)), closes [#ccfbf1](https://github.com/antialias/soroban-abacus-flashcards/issues/ccfbf1) [#99f6e4](https://github.com/antialias/soroban-abacus-flashcards/issues/99f6e4)
- **card-sorting:** match Python card layout with flex wrap ([9679d68](https://github.com/antialias/soroban-abacus-flashcards/commit/9679d68154ac8b6a2f905ec7d17a34b39bc00237))
- **card-sorting:** position slots flow horizontally with wrap ([e14ffe4](https://github.com/antialias/soroban-abacus-flashcards/commit/e14ffe44d66d0c97bc0cc4e0c255698e88ce723a))
- **card-sorting:** use blue gradient matching other game cards ([bdb84f5](https://github.com/antialias/soroban-abacus-flashcards/commit/bdb84f5d909542060fa886a83a5af62c4a785a98))
- clear hover state in CLEAR_MISMATCH for clean turn transitions ([43f7c92](https://github.com/antialias/soroban-abacus-flashcards/commit/43f7c92f6d61616e18439c995dc4a4848e233520))
- clear hover state on turn changes and game transitions ([6fd425c](https://github.com/antialias/soroban-abacus-flashcards/commit/6fd425ce85ddbf5e0125f757dc9886915fb6f749))
- **complement-race:** add missing AI commentary cooldown updates ([357aa30](https://github.com/antialias/soroban-abacus-flashcards/commit/357aa30618f80d659ae515f94b7b9254bb458910))
- **complement-race:** add missing useEffect import ([3054130](https://github.com/antialias/soroban-abacus-flashcards/commit/30541304dd0f0801860dd62967f7f7cae717bcdd))
- **complement-race:** add missing useRef import ([d43829a](https://github.com/antialias/soroban-abacus-flashcards/commit/d43829ad48f7ee879a46879f5e6ac1256db1f564))
- **complement-race:** add pressure decay system and improve logging ([66992e8](https://github.com/antialias/soroban-abacus-flashcards/commit/66992e877065a42d00379ef8fae0a6e252b0ffcb))
- **complement-race:** balance AI speeds to match original implementation ([054f0c0](https://github.com/antialias/soroban-abacus-flashcards/commit/054f0c0d235dc2b0042a0f6af48840d23a4c5ff8))
- **complement-race:** clear input state on question transitions ([5872030](https://github.com/antialias/soroban-abacus-flashcards/commit/587203056a1e1692348805eb0de909d81d16e158))
- **complement-race:** correct passenger boarding to use multiplayer fields ([7ed1b94](https://github.com/antialias/soroban-abacus-flashcards/commit/7ed1b94b8fa620cb4f64ba43e160ef511704f3ce))
- **complement-race:** counter-flip AI speech bubbles to make text readable ([07d5607](https://github.com/antialias/soroban-abacus-flashcards/commit/07d5607218aee03e813eceff5d161a7838d66bcb))
- **complement-race:** flip AI racers to face right in practice mode ([ebfff1a](https://github.com/antialias/soroban-abacus-flashcards/commit/ebfff1a62fd104d531a8158345c8c012ec8a55d3))
- **complement-race:** flip player avatar to face right in practice mode ([fa6b3b6](https://github.com/antialias/soroban-abacus-flashcards/commit/fa6b3b69d5a4a7eb70f8c18fc8c122c54c4d504a))
- **complement-race:** implement client-side momentum with continuous decay for smooth train movement ([ea19ff9](https://github.com/antialias/soroban-abacus-flashcards/commit/ea19ff918bc70ad3eb0339e18dbd32195f34816e))
- **complement-race:** improve AI speech bubble positioning ([6e436db](https://github.com/antialias/soroban-abacus-flashcards/commit/6e436db5e709d944ebffed6936ea1f8e4bd2e19e))
- **complement-race:** reduce initial momentum from 50 to 10 to prevent train sailing past first station ([5f146b0](https://github.com/antialias/soroban-abacus-flashcards/commit/5f146b0daf74d54e1c7b9a57d3a2f37e73849ff2))
- **complement-race:** remove dual game loop conflict preventing route progression ([84d42e2](https://github.com/antialias/soroban-abacus-flashcards/commit/84d42e22ac0cdd25e87e45dc698029ad7ed78559))
- **complement-race:** resolve TypeScript errors in state adapter ([59abcca](https://github.com/antialias/soroban-abacus-flashcards/commit/59abcca4c4192ca28944fa1fa366791d557c1c27))
- **complement-race:** restore smooth train movement with client-side game loop ([46a80cb](https://github.com/antialias/soroban-abacus-flashcards/commit/46a80cbcc8ec39224d4edaf540da25611d48fbdd))
- **complement-race:** show new passengers when route changes ([ec1c8ed](https://github.com/antialias/soroban-abacus-flashcards/commit/ec1c8ed263844f56477c1f709041339b42b48f4e))
- **complement-race:** track physical car indices to prevent boarding issues ([53bbae8](https://github.com/antialias/soroban-abacus-flashcards/commit/53bbae84af7317d5e12109db2054cc70ca5bea27))
- **complement-race:** track previous position to detect route threshold crossing ([a6c20aa](https://github.com/antialias/soroban-abacus-flashcards/commit/a6c20aab3b245d9893808d188d16a35ab80cfca9))
- **complement-race:** train now moves in sprint mode ([54b46e7](https://github.com/antialias/soroban-abacus-flashcards/commit/54b46e771e654721e7fabb1f45ecd45daf8e447f))
- **complement-race:** update passenger display when state changes ([5116364](https://github.com/antialias/soroban-abacus-flashcards/commit/511636400c19776b58c6bddf8f7c9cc398a05236))
- **complement-race:** use active local players pattern from navbar ([71cdc34](https://github.com/antialias/soroban-abacus-flashcards/commit/71cdc342c97ca53b5e7e4202d4d344199e8ddd98))
- **complement-race:** use local player emoji instead of first active player ([76eb051](https://github.com/antialias/soroban-abacus-flashcards/commit/76eb0517c202d1b9160b49dec0b99ff4972daff2))
- correct AbacusReact API usage and add structural styling ([247377f](https://github.com/antialias/soroban-abacus-flashcards/commit/247377fca35ee3433e02ad594ecc1c4f391f0143)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#a78](https://github.com/antialias/soroban-abacus-flashcards/issues/a78)
- create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639))
- **db:** add 'math-sprint' to database schema enums ([7b112a9](https://github.com/antialias/soroban-abacus-flashcards/commit/7b112a98babe782d4c254ef18a0295e7cbf8fefa)), closes [#1](https://github.com/antialias/soroban-abacus-flashcards/issues/1)
- **deployment:** pass git info to Docker build for deployment info modal ([4b04e43](https://github.com/antialias/soroban-abacus-flashcards/commit/4b04e43ff8c9e9f239d7f5e306aab338b535296f))
- **docker:** add packages/templates for Typst flashcard generation ([1417722](https://github.com/antialias/soroban-abacus-flashcards/commit/14177224380b8c37413123bee344c9b762055a15))
- **docker:** add qpdf for PDF linearization and validation ([c92ff39](https://github.com/antialias/soroban-abacus-flashcards/commit/c92ff3971c853e4e55ccd632ff3ee292fcce8315))
- **docker:** bypass PEP 668 externally-managed-environment error ([bb59c61](https://github.com/antialias/soroban-abacus-flashcards/commit/bb59c61638e60b0678043e954e044d9390f88e7f))
- **docker:** copy core package with Python scripts to production image ([33e9ad2](https://github.com/antialias/soroban-abacus-flashcards/commit/33e9ad2f79b591f1c5ee57a6691e1bcf48420859))
- **docker:** include Panda CSS styled-system in production image ([57fabff](https://github.com/antialias/soroban-abacus-flashcards/commit/57fabffe605d953b4a4d7e05032401cbf1ab2d14))
- **docker:** install py3-pip for Python dependency installation ([0f55909](https://github.com/antialias/soroban-abacus-flashcards/commit/0f55909533414bdc07f113b93bb8bfa21367959b))
- **docker:** install Python dependencies for flashcard generation ([c9b7e92](https://github.com/antialias/soroban-abacus-flashcards/commit/c9b7e92f39ee7aa7f13606c2836763144df102e7))
- **docker:** remove reference to deleted @soroban/client package ([2953ef8](https://github.com/antialias/soroban-abacus-flashcards/commit/2953ef8917f7b13f6eb562eb7d58d14179a718da))
- exclude dist from TypeScript compilation and add missing type import ([b7f1d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b7f1d5a5696888bb4fbf6d5da14ca333de0f0167))
- hide hover avatar for current user's own player ([dba42b5](https://github.com/antialias/soroban-abacus-flashcards/commit/dba42b59257f2422ec8f31a46c222393fcc157d4))
- **homepage:** adjust mini abacus container height ([c4066d6](https://github.com/antialias/soroban-abacus-flashcards/commit/c4066d687925bbe7737ebfeefdada7365ff97c6c))
- **homepage:** correct positioning of progression arrows in Your Journey section ([3fff9ef](https://github.com/antialias/soroban-abacus-flashcards/commit/3fff9ef140bf1f462042f8319ed6c5e2a376e4ba))
- **homepage:** fix MiniAbacus runtime error and improve sizing ([1fa0df8](https://github.com/antialias/soroban-abacus-flashcards/commit/1fa0df85f7d3988cbc61701d89476419ccf0a13c))
- **homepage:** improve text contrast in Your Journey section ([24d1200](https://github.com/antialias/soroban-abacus-flashcards/commit/24d120004dccecc1ce2f08c1b73eec902868fb23))
- **homepage:** use correct AbacusReact API and fix clipping/styling issues ([1432afd](https://github.com/antialias/soroban-abacus-flashcards/commit/1432afd6e6bd547bd0da76dbeea1c2b71244826f))
- **homepage:** use direct conditionals for mini abacus padding ([38ef16a](https://github.com/antialias/soroban-abacus-flashcards/commit/38ef16a8f91f8ab4ad0d717b0321e2002636fafb))
- **homepage:** use explicit RGBA colors for Your Journey text ([9c51cc9](https://github.com/antialias/soroban-abacus-flashcards/commit/9c51cc94eec4efcab9c0b9d1190f5b79c0c7d365))
- **homepage:** use inline styles for journey level colors ([5d85e89](https://github.com/antialias/soroban-abacus-flashcards/commit/5d85e898d65d44d8d09bee952fad44b5a9c0cd20)), closes [#4ade80](https://github.com/antialias/soroban-abacus-flashcards/issues/4ade80) [#60a5](https://github.com/antialias/soroban-abacus-flashcards/issues/60a5) [#a78](https://github.com/antialias/soroban-abacus-flashcards/issues/a78) [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24)
- **homepage:** use inline styles for Your Journey text contrast ([8e51390](https://github.com/antialias/soroban-abacus-flashcards/commit/8e5139001818d7013e1b2654ac707f7429316d58)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) [#d1d5](https://github.com/antialias/soroban-abacus-flashcards/issues/d1d5)
- **home:** use Panda CSS token() for dynamic colors and center arrows properly ([d52ba63](https://github.com/antialias/soroban-abacus-flashcards/commit/d52ba6373a4577655dc1e5f5ff4926af7f7d96c3))
- improve authorization error handling and add missing decline invitation endpoint ([97669ad](https://github.com/antialias/soroban-abacus-flashcards/commit/97669ad084b077cbf6f33b570710016ba666cdb6))
- improve join request approval error handling with actionable messages ([57bf846](https://github.com/antialias/soroban-abacus-flashcards/commit/57bf8460c8ecff374355bfb93f4b06dfbb148273))
- improve kicked modal message for retired room ejections ([f865ce1](https://github.com/antialias/soroban-abacus-flashcards/commit/f865ce16ecf7648e41549795c8137f4fc33e34ac))
- join user socket channel to receive approval notifications ([7d08fdd](https://github.com/antialias/soroban-abacus-flashcards/commit/7d08fdd90643920857eda09998ac01afbae74154))
- **levels:** use correct AbacusReact API with direct props ([892b377](https://github.com/antialias/soroban-abacus-flashcards/commit/892b377eb3bbd555dd2566bf58e946e9faa7b9f6))
- **levels:** use correct dark mode styling from homepage + docs update ([c38767f](https://github.com/antialias/soroban-abacus-flashcards/commit/c38767f4d399fa2caa5cd4e0185689d0207fbdaf))
- **matching:** add settings persistence to matching game ([00dcb87](https://github.com/antialias/soroban-abacus-flashcards/commit/00dcb872b7e70bdb7de301b56fe42195e6ee923f))
- **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed))
- **matching:** make MemoryGrid generic to support different card types ([dcda826](https://github.com/antialias/soroban-abacus-flashcards/commit/dcda826b9a7cab6614638f8661f288e9fa010324))
- **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00))
- **matching:** replace mismatch banner with card shake animation ([804096f](https://github.com/antialias/soroban-abacus-flashcards/commit/804096fd8a0709750114ab01a1015f9b5fc28b63))
- **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3))
- **math-sprint:** remove unused import and autoFocus attribute ([51593eb](https://github.com/antialias/soroban-abacus-flashcards/commit/51593eb44f93e369d6a773ee80e5f5cf50f3be67))
- **memory-quiz:** fix playMode persistence by updating validator ([de0efd5](https://github.com/antialias/soroban-abacus-flashcards/commit/de0efd59321ec779cddb900724035884290419b7))
- **memory-quiz:** persist playMode setting across game switches ([487ca7f](https://github.com/antialias/soroban-abacus-flashcards/commit/487ca7fba62e370c85bc3779ca8a96eb2c2cc3e3))
- **memory-quiz:** prevent duplicate card processing from optimistic updates ([51676fc](https://github.com/antialias/soroban-abacus-flashcards/commit/51676fc15f5bc15cdb43393d3e66f7c5a0667868))
- **memory-quiz:** prevent input lag during rapid typing in room mode ([b45139b](https://github.com/antialias/soroban-abacus-flashcards/commit/b45139b588d0ab6df4d6c1003c1b65b634e2b041))
- **memory-quiz:** scope game settings by game name for proper persistence ([3dfe54f](https://github.com/antialias/soroban-abacus-flashcards/commit/3dfe54f1cb89bd636e763e1c5acb03776f97c011))
- **memory-quiz:** synchronize card display across all players in multiplayer ([472f201](https://github.com/antialias/soroban-abacus-flashcards/commit/472f201088d82f92030273fadaf8a8e488820d6c))
- **migrations:** add migration 0009 for display_password column ([040d749](https://github.com/antialias/soroban-abacus-flashcards/commit/040d7495a0801076b252d2574023f5323540db1a))
- **moderation:** don't show pending invitation for users already in room ([fae5920](https://github.com/antialias/soroban-abacus-flashcards/commit/fae5920e2fda910f8db724103a837537b1063ac7))
- **moderation:** improve access mode settings UX ([dd9e657](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9e657db85752b32ff91ae1b33a0bf7a7628e07))
- move invitations into nav and filter out current/banned rooms ([cfaf82b](https://github.com/antialias/soroban-abacus-flashcards/commit/cfaf82b2cc93c6da1dcceb5aea8d0bd2c7b14cea))
- **nav:** add delay to hamburger menu hover to prevent premature closing ([95cd72e](https://github.com/antialias/soroban-abacus-flashcards/commit/95cd72e9bf410c7772999a17fae88719dd6e404e))
- **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f))
- **nav:** close hamburger menu when nested dropdown closes and mouse not hovering ([7d65212](https://github.com/antialias/soroban-abacus-flashcards/commit/7d652126d04239d1971b8aa302137295a3dde90b))
- **nav:** enable tooltips for local players during gameplay ([5499700](https://github.com/antialias/soroban-abacus-flashcards/commit/54997007b8485c4d7c605d5b6179cedef3fdc9c7))
- **nav:** improve readability of turn label text ([bbd1da0](https://github.com/antialias/soroban-abacus-flashcards/commit/bbd1da02b5e94d625844d9301c617da98d01868a))
- **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d))
- **nav:** navigate to /arcade/room (not /arcade/rooms/{id}) ([1c55f36](https://github.com/antialias/soroban-abacus-flashcards/commit/1c55f3630cb5f07b685555e41baa5a49314f15a3))
- **nav:** navigate to room after creation from (+) menu ([21e6e33](https://github.com/antialias/soroban-abacus-flashcards/commit/21e6e33173e7939102a7e6d6a7bd5168a97a49d6))
- **nav:** prevent hamburger menu from closing when toggling Style dropdown ([a898fbc](https://github.com/antialias/soroban-abacus-flashcards/commit/a898fbc187bf5286f63719420e0e98654ef25bb3))
- **nav:** prevent style dropdown from closing hamburger menu ([560a052](https://github.com/antialias/soroban-abacus-flashcards/commit/560a05266e15b51089cfd127b4ebe0990f04e64d))
- **nav:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606))
- **nav:** properly prevent nested style dropdown from closing hamburger menu ([c5b6a82](https://github.com/antialias/soroban-abacus-flashcards/commit/c5b6a82ca42e0f9b381f2086e825e3ce36d738a9))
- **nav:** remove animation/enlargement from network player turn indicator ([53079ed](https://github.com/antialias/soroban-abacus-flashcards/commit/53079ede13ce9734cd3e702f27e6cb8f7fff626e))
- **nav:** remove blue gradient background from network players ([2881aff](https://github.com/antialias/soroban-abacus-flashcards/commit/2881affecca16afefdeb05aecdbb3648cba05691))
- **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb))
- **nav:** remove play arrow badge from turn indicators ([80cfc10](https://github.com/antialias/soroban-abacus-flashcards/commit/80cfc10f7887533b20d663f320696917e1856899))
- **nav:** update types for registry games with nullable gameName ([a51e539](https://github.com/antialias/soroban-abacus-flashcards/commit/a51e539d023681daf639ec104e79079c8ceec98e))
- **number-guesser:** add turn indicators, error feedback, and fix player ordering ([9f62623](https://github.com/antialias/soroban-abacus-flashcards/commit/9f626236845493ef68e1b3626e80efa35637b449))
- pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0))
- **player-config:** correct label positioning in player settings dialog ([554cc40](https://github.com/antialias/soroban-abacus-flashcards/commit/554cc4063bc756c9c9cd1adf0c1964d3f2f6151b))
- populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1))
- prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c))
- remove duplicate ModerationNotifications causing double toasts ([c6886a0](https://github.com/antialias/soroban-abacus-flashcards/commit/c6886a0e59b3cbf051a828e0157495101cd8c823))
- replace isLocked with accessMode and add bcryptjs ([a74b96b](https://github.com/antialias/soroban-abacus-flashcards/commit/a74b96bb6fe331d27f3d27b8f77a3ce32b254bce))
- replace last remaining isLoading with isPending in CreateRoomModal ([85d13cc](https://github.com/antialias/soroban-abacus-flashcards/commit/85d13cc552cfe2e825f8ea20c7db00d666599134))
- replace native alerts with inline confirmations in ModerationPanel ([ebe123e](https://github.com/antialias/soroban-abacus-flashcards/commit/ebe123ed7edf24fbc7b8765ed709455a8513d6d5))
- reset join request toast state when moderation event cleared ([6beb58a](https://github.com/antialias/soroban-abacus-flashcards/commit/6beb58a7b8f8e1841c71729a3517ab459e924aa9))
- resolve Memory Quiz room-based multiplayer validation issues ([2ffeade](https://github.com/antialias/soroban-abacus-flashcards/commit/2ffeade43710b5f3fff9991cc84763bbdbf97010))
- resolve TypeScript errors in MemoryGrid and StandardGameLayout ([cabbc82](https://github.com/antialias/soroban-abacus-flashcards/commit/cabbc821955d70f118630dc21a9fcbb6d340f278))
- **room-data:** update query cache when gameConfig changes ([7cea297](https://github.com/antialias/soroban-abacus-flashcards/commit/7cea297095b78d74f5b77ca83489ec1be684a486))
- **rooms:** add real-time ownership transfer updates via WebSocket ([c00cfa3](https://github.com/antialias/soroban-abacus-flashcards/commit/c00cfa3de011720f3399fa340182b347f7e0d456))
- **room:** update GAME_TYPE_TO_NAME mapping for memory-quiz ([4afa171](https://github.com/antialias/soroban-abacus-flashcards/commit/4afa171af212902120599b3d68f58cfbdf7820b0))
- set color on abacus container div for numeral visibility ([cd47960](https://github.com/antialias/soroban-abacus-flashcards/commit/cd4796024e41f731ae5d83c82f6582e19d6eaf99)), closes [#1f2937](https://github.com/antialias/soroban-abacus-flashcards/issues/1f2937)
- show initial value and improve numeral contrast ([1b57f6d](https://github.com/antialias/soroban-abacus-flashcards/commit/1b57f6ddecf3a118f2e4fadd1a91be1256f5a034)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24)
- simplify abacus pane with light background ([30f48ab](https://github.com/antialias/soroban-abacus-flashcards/commit/30f48ab8976976688e089b07ece7fdae6d7ada79))
- **socket-io:** update import path for socket-server module ([1a64dec](https://github.com/antialias/soroban-abacus-flashcards/commit/1a64decf5afe67c16e1aec283262ffa6132dcd83))
- stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574))
- **toast:** scope animations to prevent affecting other UI elements ([245ed8a](https://github.com/antialias/soroban-abacus-flashcards/commit/245ed8a625ba848f8cd79d51bfd88600cd77f0b9))
- **tutorial:** correct column index calculation for variable column counts ([bf1ced4](https://github.com/antialias/soroban-abacus-flashcards/commit/bf1ced43f801938b05f01548eea5fe771de1b58f))
- **tutorial:** filter bead highlights when using fewer columns ([4d906ec](https://github.com/antialias/soroban-abacus-flashcards/commit/4d906ec20e90a9b0b3838f9b8428e0c68992f381))
- **tutorial:** reduce tooltip z-index to scroll under nav bar ([47640f3](https://github.com/antialias/soroban-abacus-flashcards/commit/47640f3486c6d4a7107d59bdcce043f76fabbb1d))
- **tutorial:** resolve React hydration error in TutorialPlayer ([c883d9e](https://github.com/antialias/soroban-abacus-flashcards/commit/c883d9e4c1b3a2f52c9d41e3ddce7418399f2649))
- **tutorial:** resolve TypeScript errors in TutorialPlayer ([88f57ce](https://github.com/antialias/soroban-abacus-flashcards/commit/88f57ce6df125142d6ea7feec60c475926bd4929))
- **tutorial:** use correct customStyles API for dark mode frame styling ([fdc882c](https://github.com/antialias/soroban-abacus-flashcards/commit/fdc882cb046e3d8835fbca59841e9af5329bcc52))
- update locked room terminology and allow existing members ([1ddf985](https://github.com/antialias/soroban-abacus-flashcards/commit/1ddf985938d9542fe26e44da58234f3d4e3c9543))
- use app-wide abacus config and remove instruction text ([0a50c73](https://github.com/antialias/soroban-abacus-flashcards/commit/0a50c733b089c7c341f0fdef47da78d1c61a3cb5))
- use color instead of fill for numeral styling ([ea10c16](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10c16811eb969b9963417079c330ae9ff295ba))
- use defaultValue for interactive abacus control ([06aca98](https://github.com/antialias/soroban-abacus-flashcards/commit/06aca986ace4d76b70f2fd2f5e57f66758185b38))
- use useCreateRoom hook instead of nonexistent createRoom from useRoomData ([f7d63b3](https://github.com/antialias/soroban-abacus-flashcards/commit/f7d63b30ac498b63797ae8683a0beb435a1c97b3))
### Code Refactoring
- **db:** remove database schema coupling for game names ([e135d92](https://github.com/antialias/soroban-abacus-flashcards/commit/e135d92abb4d27f646c1fbeff6524a729d107426)), closes [#1](https://github.com/antialias/soroban-abacus-flashcards/issues/1)
### Features
- **abacus-react:** add BigInt support for 30-digit Dan level abacuses ([0ab4cc2](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab4cc288066b75a6ea4371f65098db5c0fc8847))
- add API routes for moderation and invitations ([79a8518](https://github.com/antialias/soroban-abacus-flashcards/commit/79a85185575571cf628d655b0558f8246d2b02c7))
- add backend library functions for room moderation ([84f3c4b](https://github.com/antialias/soroban-abacus-flashcards/commit/84f3c4bcfd258cb2e54b89b55d5162af57b74fe5))
- add common UI components ([cd3115a](https://github.com/antialias/soroban-abacus-flashcards/commit/cd3115aa6d6bb8cf227b3d15d055f27dc5377a00))
- add database schema for room moderation and invitations ([97d1604](https://github.com/antialias/soroban-abacus-flashcards/commit/97d16041dfe33bd817df2472323962dc4e94f8ee))
- add drizzle migration for room_game_configs table ([3bae00b](https://github.com/antialias/soroban-abacus-flashcards/commit/3bae00b9a9dc925039a02fe07d036a2fc5e0fb79))
- add fun automatic player naming system ([249257c](https://github.com/antialias/soroban-abacus-flashcards/commit/249257c6c77d503b48479065664c96c5de36a234))
- add invitation system UI components ([fd3a2d1](https://github.com/antialias/soroban-abacus-flashcards/commit/fd3a2d1f76eb12473bb2b5a33453362d6889d7b0))
- add moderation panel with unban & invite feature ([a2d0169](https://github.com/antialias/soroban-abacus-flashcards/commit/a2d0169f8063f00726ce2769bd5db270cfa82f4d))
- add name generator button and abacus emoji ([07212e4](https://github.com/antialias/soroban-abacus-flashcards/commit/07212e4df0c7fd4b8cccf935c48b14164df6961d))
- add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6))
- add prominent join request approval notifications for room moderators ([036da6d](https://github.com/antialias/soroban-abacus-flashcards/commit/036da6de66ca7d3f459c55df657b04a9e88d9cd3))
- add real-time socket updates for moderation events ([86ceba3](https://github.com/antialias/soroban-abacus-flashcards/commit/86ceba3df3d39812d63fbf5d03fc37d8c3a75027))
- add room access modes and ownership transfer ([6ff21c4](https://github.com/antialias/soroban-abacus-flashcards/commit/6ff21c4f1dd0dd1db14257612809b4d40512689a))
- add room creation and join flow UI ([7f95032](https://github.com/antialias/soroban-abacus-flashcards/commit/7f950322530e8deb2e330d0d2147d1a20fa1e642))
- add socket listener and polling for approval notifications ([35b4a72](https://github.com/antialias/soroban-abacus-flashcards/commit/35b4a72c8b2f80a74b5d2fe02b048d4ec4d1d6f2))
- add waiting state for approval requests in JoinRoomModal ([f9b0429](https://github.com/antialias/soroban-abacus-flashcards/commit/f9b0429a2e2d22944acba66009dd87a9d9eb28c2))
- adjust tier probabilities for more abacus flavor ([49219e3](https://github.com/antialias/soroban-abacus-flashcards/commit/49219e34cde32736155a11929d10581e783cba69))
- **arcade:** add Card Sorting Challenge game scaffolding ([df37260](https://github.com/antialias/soroban-abacus-flashcards/commit/df37260e26bbb146493e0834e093afd98fa3f2a4))
- **arcade:** add Change Game functionality for room hosts ([ee39241](https://github.com/antialias/soroban-abacus-flashcards/commit/ee39241e3c9e04202592497d9987eafcb89c00c9))
- **arcade:** add game selection screen with navigation to room page ([4124f1c](https://github.com/antialias/soroban-abacus-flashcards/commit/4124f1cc081f5cb9d6f450f3c2e0cca8a247deba))
- **arcade:** add Math Sprint game implementation ([e5be09e](https://github.com/antialias/soroban-abacus-flashcards/commit/e5be09ef5f170c7544557f75b9eca17bb2069246))
- **arcade:** add modular game SDK and registry system ([de30bec](https://github.com/antialias/soroban-abacus-flashcards/commit/de30bec47923565fe5d1d5a6f719f3fc4e9d1509))
- **arcade:** add Number Guesser demo game with plugin architecture ([0e3c058](https://github.com/antialias/soroban-abacus-flashcards/commit/0e3c0587073a69574a50f05c467f2499296012bf))
- **arcade:** broadcast game selection changes to all room members ([b99e754](https://github.com/antialias/soroban-abacus-flashcards/commit/b99e7543952bb0d47f42e79dc4226b3c1280a0ee))
- **arcade:** migrate matching pairs - phases 1-4 and 7 complete ([2a3af97](https://github.com/antialias/soroban-abacus-flashcards/commit/2a3af973f70ff07de30b38bbe1cdc549a971846f))
- **arcade:** migrate memory-quiz to modular game system ([f48c37a](https://github.com/antialias/soroban-abacus-flashcards/commit/f48c37accccb88e790c7a1b438fd0566e7120e11))
- **arcade:** register Math Sprint in game system ([0c05a7c](https://github.com/antialias/soroban-abacus-flashcards/commit/0c05a7c6bbc8d6f6e1f92e15e691d7e1aba0d8f7)), closes [#2](https://github.com/antialias/soroban-abacus-flashcards/issues/2) [#3](https://github.com/antialias/soroban-abacus-flashcards/issues/3)
- **card-sorting:** add spectator mode UX enhancements ([4ab093a](https://github.com/antialias/soroban-abacus-flashcards/commit/4ab093a9d8ba5b290da44aaa6aa71ad7d7149b32))
- **card-sorting:** add UI components and fix AbacusReact props ([d249ec0](https://github.com/antialias/soroban-abacus-flashcards/commit/d249ec0e5ff4610f55f35f762d726e0c98ac366c))
- **card-sorting:** implement Provider with arcade session integration ([7f6fea9](https://github.com/antialias/soroban-abacus-flashcards/commit/7f6fea91f6dcc69a173eea86bcefc9921f1c1664))
- **complement-race:** add infinite win condition for Steam Sprint mode ([d8fdfee](https://github.com/antialias/soroban-abacus-flashcards/commit/d8fdfeef74a5d3bb9684254af1c9d64d264b46ad))
- **complement-race:** add mini app navigation bar ([ed0ef2d](https://github.com/antialias/soroban-abacus-flashcards/commit/ed0ef2d3b87324470d06b3246652967544caec26))
- **complement-race:** enable adaptive AI difficulty in arcade ([55010d2](https://github.com/antialias/soroban-abacus-flashcards/commit/55010d2bcd953718d8fea428b1f7f613a193779c))
- **complement-race:** implement state adapter for multiplayer support ([13882bd](https://github.com/antialias/soroban-abacus-flashcards/commit/13882bda3258d68a817473d7d830381f02553043))
- **complement-race:** restore AI opponents in practice and survival modes ([325e07d](https://github.com/antialias/soroban-abacus-flashcards/commit/325e07de5929169aa333ef16f7bca5b41eeb1622))
- **homepage:** add animated mini abacus to "Read and set numbers" card ([e028e34](https://github.com/antialias/soroban-abacus-flashcards/commit/e028e342ad4bc01491e05a4ba074628155926fd8))
- **homepage:** add more visual embellishments to learning cards ([4ec1b95](https://github.com/antialias/soroban-abacus-flashcards/commit/4ec1b952f202d50f6db287c41732ec65ca17c142))
- **homepage:** enhance "What You'll Learn" with visual cards ([d142342](https://github.com/antialias/soroban-abacus-flashcards/commit/d1423420e653b26b2f89d9d17ae5d597807d6979))
- **home:** redesign home page to showcase complete platform ([ee6c4f2](https://github.com/antialias/soroban-abacus-flashcards/commit/ee6c4f2f4f39e3b30f59c54866c3857c218fb80f))
- implement approval request flow for share links ([4a6b3ca](https://github.com/antialias/soroban-abacus-flashcards/commit/4a6b3cabe5c6aa42f4fa00ed09f9b3713f097539))
- implement avatar-themed name generation with probabilistic mixing ([76a8472](https://github.com/antialias/soroban-abacus-flashcards/commit/76a8472f12d251071b97f2288f62f0b358576232))
- implement proper retired room behavior with member expulsion ([a2d5368](https://github.com/antialias/soroban-abacus-flashcards/commit/a2d53680f27db04b2cd09973e62a76c5a7d4ce06))
- improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19))
- improve room creation UX and add password support for share links ([dcbb507](https://github.com/antialias/soroban-abacus-flashcards/commit/dcbb5072d8e0a12838fe70e3faa85f94cd63b0c1))
- integrate moderation system into arcade pages ([087652f](https://github.com/antialias/soroban-abacus-flashcards/commit/087652f9e7091a93c02906162275ef88ec5e44c6))
- **levels:** add Dan levels ladder visualization ([c18012c](https://github.com/antialias/soroban-abacus-flashcards/commit/c18012cb505a1f2a86ebed7579b379a4d7d97f2c))
- **levels:** add dark mode styling and responsive scaling to abacus ([92e1e62](https://github.com/antialias/soroban-abacus-flashcards/commit/92e1e621321039206f65b3605f5797bbdc6beafc))
- **levels:** add informational footer section ([0b1bff7](https://github.com/antialias/soroban-abacus-flashcards/commit/0b1bff7eab8f5da84ae309dbda336e168c2fe3fd))
- **levels:** add Kyu & Dan levels page with homepage link ([39b1e7d](https://github.com/antialias/soroban-abacus-flashcards/commit/39b1e7de16f15412c91cf648c714e31e2de7a6bc))
- **levels:** add kyu level data and cards ([6463a3b](https://github.com/antialias/soroban-abacus-flashcards/commit/6463a3b2f6371ebebac1048197fb44178997d2ef))
- **levels:** create true horizontal slider with abacus visualizations ([6d734f1](https://github.com/antialias/soroban-abacus-flashcards/commit/6d734f1d51f5ba1367f55923e58bd977413d754e))
- **levels:** implement interactive slider for exploring kyu & dan ranks ([eb3b100](https://github.com/antialias/soroban-abacus-flashcards/commit/eb3b1000563536d4143ba1f4ec04e59e8dd2e608))
- **levels:** replace kyu grid with interactive slider and abacus visualizations ([10978e8](https://github.com/antialias/soroban-abacus-flashcards/commit/10978e890beee65dea78ddcce52cfe5315d58063))
- make home page abacus interactive with audio ([9a53d7e](https://github.com/antialias/soroban-abacus-flashcards/commit/9a53d7e5db18853aca4e2e0c7abc799217feaecf))
- **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864))
- **math-sprint:** add game manifest ([1eefcc8](https://github.com/antialias/soroban-abacus-flashcards/commit/1eefcc89a58b79f928932a7425d6b88fb45a5526))
- **memory-quiz:** add multiplayer support with redesigned scoreboards ([1cf4469](https://github.com/antialias/soroban-abacus-flashcards/commit/1cf44696c26473ce4ab2fc2039ff42f08c20edb6))
- **memory-quiz:** persist game settings per-game across sessions ([05a8e0a](https://github.com/antialias/soroban-abacus-flashcards/commit/05a8e0a84272c6c45a4014413ee00726eb88b76a))
- **memory-quiz:** show player emojis on cards to indicate who found them ([05bd11a](https://github.com/antialias/soroban-abacus-flashcards/commit/05bd11a133706c9ed8c09c744da7ca8955fa979a))
- **moderation:** add inline feedback and persistent password display ([86e3d41](https://github.com/antialias/soroban-abacus-flashcards/commit/86e3d4199628f95048b9265c9de0adfdc2934f93))
- **moderation:** improve password input with copy button ([2580e47](https://github.com/antialias/soroban-abacus-flashcards/commit/2580e474d08bf91477339e998b2c70962a633f41))
- **nav:** add prominent turn indicator arrow badge ([f574558](https://github.com/antialias/soroban-abacus-flashcards/commit/f574558dffe22a1ecf06ee44d37b5eb1a20011b9))
- **nav:** add pulsing indicator for offline network players ([64fb30e](https://github.com/antialias/soroban-abacus-flashcards/commit/64fb30e7eca7b485687329b9dd3d9e90ac507e2d))
- **nav:** add turn indicators to network players ([623314b](https://github.com/antialias/soroban-abacus-flashcards/commit/623314bd383a54c57ca93ad9f2d8620cf89412e9))
- **nav:** add turn label text under current player avatars ([52a66d5](https://github.com/antialias/soroban-abacus-flashcards/commit/52a66d5f6869e760f2a8914a6d39d21d47cfb7f4))
- **nav:** center game context with hamburger menu for utilities ([a35a7d5](https://github.com/antialias/soroban-abacus-flashcards/commit/a35a7d56df945a5b15c1ddfa8b489c0d292e71c4))
- **nav:** combine room info and network players in single pane ([d5473ab](https://github.com/antialias/soroban-abacus-flashcards/commit/d5473ab66a7c8c78f10cef9bb7084fc311520b2c))
- **nav:** unify room dropdown with join code and game menu ([f7b83f8](https://github.com/antialias/soroban-abacus-flashcards/commit/f7b83f8c149b532321251abed98a94874196b2f5))
- prevent invitations to retired rooms ([a7c3c1f](https://github.com/antialias/soroban-abacus-flashcards/commit/a7c3c1f4cd802985c8f040bc1cdf3ea4482a2fce))
- redesign home page with component showcase ([29af265](https://github.com/antialias/soroban-abacus-flashcards/commit/29af265958f9fdab0253b92e153c01575840454d))
- redesign homepage with educational vision and interactive demo ([2f09cb5](https://github.com/antialias/soroban-abacus-flashcards/commit/2f09cb5539f2bb0b8c77359c6f774c3742313e1e))
- redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff))
- replace access mode dropdown with visual button grid ([e5d0672](https://github.com/antialias/soroban-abacus-flashcards/commit/e5d067205989d7c3105998dcd7d67fd0408f332c))
- **tutorial:** add dark mode styling for coaching bar and abacus frame ([7e2f580](https://github.com/antialias/soroban-abacus-flashcards/commit/7e2f580877af9d21409f427778fa3569c950fcf5))
- **tutorial:** add dark theme and column control props ([d42f9b2](https://github.com/antialias/soroban-abacus-flashcards/commit/d42f9b2d9ad630826c55b753dc581c469e8f9083))
- **tutorial:** add fill color support for dark mode column posts and reckoning bar ([2eb3ff3](https://github.com/antialias/soroban-abacus-flashcards/commit/2eb3ff340613301df20bf14f5b461371a27d7f05))
- **tutorial:** add hideNavigation prop to TutorialPlayer ([79ea52a](https://github.com/antialias/soroban-abacus-flashcards/commit/79ea52af80c8cbb482bbdd87f77caf32ada737ee))
- **tutorial:** add hideTooltip prop and improve dark mode coaching bar ([1ee25b3](https://github.com/antialias/soroban-abacus-flashcards/commit/1ee25b3dd2f0ee9dd7ed571ba818b7ca5a247f85))
- **tutorial:** add silentErrors prop to suppress error messages ([8835e1c](https://github.com/antialias/soroban-abacus-flashcards/commit/8835e1c57ab8adcecefe0db082360dd98fbfaac7))
### Reverts
- **nav:** restore original room creation/join behavior ([710e93c](https://github.com/antialias/soroban-abacus-flashcards/commit/710e93c9972339885b8f4ca02ecd2c1cdf65c040))
### BREAKING CHANGES
- **db:** Database schemas now accept any string for game names
- Added DELETE /api/arcade/rooms/:roomId/invite endpoint for declining invitations
Authorization Error Handling:
- ModerationPanel: Parse and display API error messages (kick, ban, unban, invite, data loading)
- PendingInvitations: Parse and display API error messages (decline, fetch)
- All moderation actions now show specific auth errors like "Only the host can kick users"
New Endpoint:
- DELETE /api/arcade/rooms/:roomId/invite: Allow users to decline their pending invitations
- Validates invitation exists and is pending
- Only invited user can decline their own invitation
- Returns proper error messages for auth failures
Bug Fix:
- Fixed invitations/pending/route.ts ban check query (removed reference to non-existent unbannedAt field)
- Ban records are deleted when unbanned, so any existing ban is active
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
# [1.8.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.7.0...abacus-react-v1.8.0) (2025-10-10)
### Bug Fixes
- add @types/minimatch to abacus-react devDependencies ([fa45475](https://github.com/antialias/soroban-abacus-flashcards/commit/fa4547543dcd0cddc7cc9ff9da62f60a4717fb1f))
- add CLEAR_MISMATCH move to allow mismatch feedback to auto-dismiss ([158f527](https://github.com/antialias/soroban-abacus-flashcards/commit/158f52773d20dfab7dc55575d9999f32b4c589a2))
- add hasAttemptedFetch flag to prevent premature redirect ([c30f585](https://github.com/antialias/soroban-abacus-flashcards/commit/c30f58581028878350282cad5231d614590d9f2b))
- add missing DOMPoint properties to getPointAtLength mock ([1e17278](https://github.com/antialias/soroban-abacus-flashcards/commit/1e17278f942b3fbcc5d05be746178f2e780f0bd9))
- add missing name property to Passenger test mocks ([f8ca248](https://github.com/antialias/soroban-abacus-flashcards/commit/f8ca2488447e89151085942f708f6acf350a2747))
- add non-null assertions to skillConfiguration utilities ([9c71092](https://github.com/antialias/soroban-abacus-flashcards/commit/9c7109227822884d25f8546739c80c6e7491e28d))
- add npmrc for hoisting and fix template paths ([5c65ac5](https://github.com/antialias/soroban-abacus-flashcards/commit/5c65ac5caabb7197f069344d0ed29d02c3de2b9a))
- add optional chaining to stepBeadHighlights access ([a5fac5c](https://github.com/antialias/soroban-abacus-flashcards/commit/a5fac5c75c8cd67b218a5fd5ad98818dad74ab67))
- add Python setuptools and build tools for better-sqlite3 compilation ([a216a3d](https://github.com/antialias/soroban-abacus-flashcards/commit/a216a3d3435a132c8add0a7c711b021bf4b1555f))
- add showAsAbacus property to ComplementQuestion type ([4adcc09](https://github.com/antialias/soroban-abacus-flashcards/commit/4adcc096430fbb03f0a8b2f0aef4be239aff9cd0))
- add userId to optimistic player in useCreatePlayer ([5310463](https://github.com/antialias/soroban-abacus-flashcards/commit/5310463becd0974291cff49522ae5669a575410d))
- allow navigation to game setup pages without active session ([c7ad3c0](https://github.com/antialias/soroban-abacus-flashcards/commit/c7ad3c069502580d1e72e7cc01e7b1f793ba9357))
- always show game control buttons in room-based sessions ([14ba422](https://github.com/antialias/soroban-abacus-flashcards/commit/14ba422919abd648e2a134ce167a5e6fd9f84e73))
- auto-cleanup orphaned arcade sessions without valid rooms ([3c002ab](https://github.com/antialias/soroban-abacus-flashcards/commit/3c002ab29d1b72a0e1ffb70bb0744dc560e7bdc2))
- broadcast member join/leave events immediately via API ([ebfc88c](https://github.com/antialias/soroban-abacus-flashcards/commit/ebfc88c5ea0a8a0fdda039fa129e1054b9c42e65))
- change TypeScript moduleResolution from bundler to node ([327aee0](https://github.com/antialias/soroban-abacus-flashcards/commit/327aee0b4b5c0b0b2bf3eeb48d861bb3068f6127))
- compile TypeScript server files to JavaScript for production ([83b9a4d](https://github.com/antialias/soroban-abacus-flashcards/commit/83b9a4d976fa540782826afa13a35c92e706bf1e))
- **complement-race:** prevent passengers being left behind at delivery stations ([e6ebecb](https://github.com/antialias/soroban-abacus-flashcards/commit/e6ebecb09b1e5dd78c2dc11e125399082fb420ab))
- convert guestId to internal userId for player ownership check ([3a01f46](https://github.com/antialias/soroban-abacus-flashcards/commit/3a01f4637d2081c66fe37c7f8cfee229442ec744))
- convert Jest mocks to Vitest in useSteamJourney tests ([e067271](https://github.com/antialias/soroban-abacus-flashcards/commit/e06727160c70a1ab38a003104d1fef8fb83ff92d))
- convert LocalMemoryPairsProvider to pure client-side with useReducer ([b128db1](https://github.com/antialias/soroban-abacus-flashcards/commit/b128db1783a8dcffe7879745c3342add2f9ffe29))
- convert player IDs from number to string in arcade tests ([72db1f4](https://github.com/antialias/soroban-abacus-flashcards/commit/72db1f4a2c3f930025cd5ced3fcf7c810dcc569d))
- correct avatar positioning to prevent fly-in animation ([573d0df](https://github.com/antialias/soroban-abacus-flashcards/commit/573d0df20dcdac41021c46feb423dbf3782728f6))
- correct Docker CMD to use root-level server.js ([48b47e9](https://github.com/antialias/soroban-abacus-flashcards/commit/48b47e9bdb0da44746282cd7cf7599a69bf5130d))
- correct hover avatar and turn indicator to show only current player ([0596ef6](https://github.com/antialias/soroban-abacus-flashcards/commit/0596ef65879a303f1f71863ef307af69bf270c70))
- correct node_modules path for pnpm symlinks in Docker ([c12351f](https://github.com/antialias/soroban-abacus-flashcards/commit/c12351f2c99daaed710a1136eb13f6ccc54cbcff))
- correct playerMetadata userId assignment for room-based multiplayer ([53797db](https://github.com/antialias/soroban-abacus-flashcards/commit/53797dbb2d5ccb80e61cbc186ca0a344fe1fbd96))
- correct static files and public path in Docker image ([c287b19](https://github.com/antialias/soroban-abacus-flashcards/commit/c287b19a39e1506033db6de39aa4d3761cb65d62))
- correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65))
- correctly access getSocketIO from dynamic import ([30abf33](https://github.com/antialias/soroban-abacus-flashcards/commit/30abf33ee86b36f2a98014e5b017fa8e466a2107))
- disable turn validation in arcade mode matching game ([7c0e6b1](https://github.com/antialias/soroban-abacus-flashcards/commit/7c0e6b142b90f0fc3d444b3dcc1fff1512a0a3b2))
- enable real-time player name updates across room members ([5171be3](https://github.com/antialias/soroban-abacus-flashcards/commit/5171be3d37980eb1c98aa0d1e1d6e06f589763d1))
- enable shamefully-hoist for semantic-release dependencies ([6168c29](https://github.com/antialias/soroban-abacus-flashcards/commit/6168c292d5f15748e80610103a6a787c0cf29d0f))
- enable smooth spring animations between card hovers ([8d53b58](https://github.com/antialias/soroban-abacus-flashcards/commit/8d53b589aa17ebc6d0a9251b3006fd8a90f90a61))
- enforce player ownership authorization for multiplayer games ([71b0aac](https://github.com/antialias/soroban-abacus-flashcards/commit/71b0aac13c970c03fe8d296d41e9472ad72a00fa))
- enforce playerId must be explicitly provided in arcade moves ([d5a8a2a](https://github.com/antialias/soroban-abacus-flashcards/commit/d5a8a2a14cb14ecd00827ddc96873f3db79573fd))
- export MemoryPairsContext to fix provider hook error ([80ad33e](https://github.com/antialias/soroban-abacus-flashcards/commit/80ad33eec0b6946702eaa9cf1b1c246852864b00))
- ignore all node_modules in Docker ([4792dde](https://github.com/antialias/soroban-abacus-flashcards/commit/4792dde1beef9c6cb84a27bc6bb6acfa43919a72))
- ignore nested node_modules in Docker ([f554592](https://github.com/antialias/soroban-abacus-flashcards/commit/f554592272c2e92d7f1ec6550211518de9c3242f))
- implement shared session architecture for room-based multiplayer ([2856f4b](https://github.com/antialias/soroban-abacus-flashcards/commit/2856f4b83fbcc6483d96cc6e7da2fe5bc911625d))
- include all players from room members in room games ([28a2e7d](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2e7d6511e70b83adf7d0465789a91026bc1f7))
- lazy-load database connection to prevent build-time access ([af8d993](https://github.com/antialias/soroban-abacus-flashcards/commit/af8d9936285c697ff45700115eba83b5debdf9ad))
- make leave room button actually remove user from room ([49f12f8](https://github.com/antialias/soroban-abacus-flashcards/commit/49f12f8cab631fedd33f1bc09febfdc95e444625))
- make results screen compact to fit viewport without scrolling ([9d4cba0](https://github.com/antialias/soroban-abacus-flashcards/commit/9d4cba05be84e7c162d706c8697eede23314b1a4))
- move auth.ts to src/ to match @/ path alias ([7829d8a](https://github.com/antialias/soroban-abacus-flashcards/commit/7829d8a0fb86dac07aa1b2fb0b68908e7e8381b8))
- pass player IDs (not user IDs) in all arcade game moves ([d00abd2](https://github.com/antialias/soroban-abacus-flashcards/commit/d00abd25e755c0304517a7953cb78022a073b7c3))
- preserve workspace node_modules in Docker for hoisted mode ([4f8aaf0](https://github.com/antialias/soroban-abacus-flashcards/commit/4f8aaf04aadda11ce9ec470dec44f78062929e77))
- prevent avatar fly-in and hide local player's own hover ([7f65a67](https://github.com/antialias/soroban-abacus-flashcards/commit/7f65a67cef3d7f0ebce1bd7417972a6138acfc46))
- prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9))
- prevent duplicate display of network avatars in nav ([d474ef0](https://github.com/antialias/soroban-abacus-flashcards/commit/d474ef07d69cf0b4f5dedd404616e3bbee7289fe))
- prevent redirect loops by checking if already at target URL ([c5268b7](https://github.com/antialias/soroban-abacus-flashcards/commit/c5268b79dee66aa02e14e2024fe1c6242a172ed3))
- real-time room member updates via globalThis socket.io sharing ([94a1d9b](https://github.com/antialias/soroban-abacus-flashcards/commit/94a1d9b11058bfb4b54a4753e143cf85f215e913))
- regenerate lockfile with correct dependency order ([51bf448](https://github.com/antialias/soroban-abacus-flashcards/commit/51bf448c9f159152e89296d9014dde688fcf3a97))
- regenerate lockfile with node-linker=hoisted from scratch ([480960c](https://github.com/antialias/soroban-abacus-flashcards/commit/480960c2c8e0c50fe2b6ec69a34b772751a8bf41))
- regenerate pnpm lockfile for pnpm 9 compatibility ([4ab1aef](https://github.com/antialias/soroban-abacus-flashcards/commit/4ab1aef9b8fcf15cc03e86c829ca9885e7201b77))
- remove .npmrc from Dockerfile COPY ([e71c2b4](https://github.com/antialias/soroban-abacus-flashcards/commit/e71c2b4da85076dfc97401fc170cd88cb0aa4375))
- remove .npmrc in Docker to avoid hoisted mode issues ([2a77d75](https://github.com/antialias/soroban-abacus-flashcards/commit/2a77d755b7820b5b6b52ea99db418e6d071d726e))
- remove ArcadeGuardedPage from room page to prevent redirect loop ([4686f59](https://github.com/antialias/soroban-abacus-flashcards/commit/4686f59d245b2b502dc0764c223a5ce84bf1af44))
- remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61))
- remove duplicate PlayerStatusBar story file from arcade ([4e721f7](https://github.com/antialias/soroban-abacus-flashcards/commit/4e721f765a29fe8628d4e34ef94cdf5728eea3dc))
- remove redirect loop by not redirecting from room page ([10cf715](https://github.com/antialias/soroban-abacus-flashcards/commit/10cf71527f7cede7fd93e502dbfc59df99b5a524))
- remove remaining typst-dependent files ([d1b9b72](https://github.com/antialias/soroban-abacus-flashcards/commit/d1b9b72cfc2f2ba36c40d7ae54bc6fdfcc5f34da))
- remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d))
- remove standalone output mode incompatible with custom server ([c8da5a8](https://github.com/antialias/soroban-abacus-flashcards/commit/c8da5a8340c8798bba452b43244bc0e04ce8b0c5))
- require activePlayers in START_GAME, never fallback to userId ([ea1b1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/ea1b1a2f69a35a6a27f7f952971509b2bb2e6f8d))
- resolve race condition in /arcade/room redirect ([5ed2ab2](https://github.com/antialias/soroban-abacus-flashcards/commit/5ed2ab21cab408147081a493c8dd6b1de48b2d01))
- resolve socket-server import path for Next.js build ([12c3c37](https://github.com/antialias/soroban-abacus-flashcards/commit/12c3c37ff8e1d3df71d72e527c08fa975043c504))
- respect enabled flag in useArcadeGuard WebSocket redirects ([01ff114](https://github.com/antialias/soroban-abacus-flashcards/commit/01ff114258ff7ab43ef2bd79b41c7035fe02ac70))
- revert to default pnpm mode for Docker compatibility ([bd0092e](https://github.com/antialias/soroban-abacus-flashcards/commit/bd0092e69ac4f74ea89b8d31399cf72f57484cbb))
- revert to showing only active players in room games ([87cc0b6](https://github.com/antialias/soroban-abacus-flashcards/commit/87cc0b64fb5f3debaf1d2f122aecfefc62922fed))
- rewrite layout.nav.test to match actual RootLayout props ([a085de8](https://github.com/antialias/soroban-abacus-flashcards/commit/a085de816fcdeb055addabb8aec391b111cb5f94))
- send all members (not just online) in socket broadcasts ([3fa6cce](https://github.com/antialias/soroban-abacus-flashcards/commit/3fa6cce17a7acd940cf5a9e6433bf6c4b497540c))
- set room sessions to use /arcade/room URL ([9dac431](https://github.com/antialias/soroban-abacus-flashcards/commit/9dac431c1f91c246f67a059cda3cff6cbef40a43))
- show "Return to Arcade" button only during active game ([4153929](https://github.com/antialias/soroban-abacus-flashcards/commit/4153929a2ab199836249d53d92c1be4979782b73))
- show correct join/leave button based on room membership ([5751dfe](https://github.com/antialias/soroban-abacus-flashcards/commit/5751dfef5c81981937cd5300c4256e5b74bb7488))
- update Dockerfile for non-standalone production builds ([14746c5](https://github.com/antialias/soroban-abacus-flashcards/commit/14746c568e58f4a847e0da2d866dbaeabf5a0e8b))
- update Dockerfile pnpm version and fix TypeScript config ([43077a8](https://github.com/antialias/soroban-abacus-flashcards/commit/43077a80e271a793c88f100874914ae6f3c515b5))
- update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f))
- update lockfile and fix Makefile paths ([7ba746b](https://github.com/antialias/soroban-abacus-flashcards/commit/7ba746b6bdcc4c06172e1dbacd856da9416e010a))
- update matching game for UUID player system ([2e041dd](https://github.com/antialias/soroban-abacus-flashcards/commit/2e041ddc4443be1d032139ad9850bbc28db5c171))
- update race track components for new player system ([ae4e8fc](https://github.com/antialias/soroban-abacus-flashcards/commit/ae4e8fcb5a62c07fb9ffa9a70c07e45ca8be88c8))
- update useArcadeGuard tests with proper useViewerId mock ([4eb49d1](https://github.com/antialias/soroban-abacus-flashcards/commit/4eb49d1d44e1d85526ef6564f88a8fbcebffb4d2))
- upgrade CI dependencies and fix deprecated actions ([6a51c1e](https://github.com/antialias/soroban-abacus-flashcards/commit/6a51c1e9bdc299d86b8001eba35f930fe16cd60c))
- use .npmrc in Docker for hoisted mode consistency ([2df8cdc](https://github.com/antialias/soroban-abacus-flashcards/commit/2df8cdc88ed03b6b04642a3441e17c6fda11d2a5))
- use game state playerMetadata instead of GameModeContext in UI components ([388c254](https://github.com/antialias/soroban-abacus-flashcards/commit/388c25451d11b85236c1f7682fe2f7a62a15d5eb))
- use node-linker=hoisted for full dependency hoisting ([d3b2e0b](https://github.com/antialias/soroban-abacus-flashcards/commit/d3b2e0b2e152150886110edd80dfe43f70df63d9))
- use Object.defineProperty for NODE_ENV in middleware tests ([e73191a](https://github.com/antialias/soroban-abacus-flashcards/commit/e73191a7298dbb6dd15da594267ea6221062c36b))
- use only local user's players in LocalMemoryPairsProvider ([c26138f](https://github.com/antialias/soroban-abacus-flashcards/commit/c26138ffb55a237a99cb6ff399c8a2ac54a22b51))
- use player IDs instead of array indices in matching game ([ccd0d6d](https://github.com/antialias/soroban-abacus-flashcards/commit/ccd0d6d94ccd1cc25eed602d32a9cf884bda2ee6))
- use RoomMemoryPairsProvider in room page ([c279731](https://github.com/antialias/soroban-abacus-flashcards/commit/c27973191f0144604e17a8a14adf0a88df476e27))
- use UUID player IDs in session creation fallback ([22541df](https://github.com/antialias/soroban-abacus-flashcards/commit/22541df99f049ce99e020e12c2d28b33434de51d))
- wrap Buffer in Uint8Array for Next.js Response API ([98384d2](https://github.com/antialias/soroban-abacus-flashcards/commit/98384d264e4a10d1836aa9f2e69151b122ffa7b0))
### Features
- add API routes for players and user stats ([6f940e2](https://github.com/antialias/soroban-abacus-flashcards/commit/6f940e24d663cc06084a943df4743c2a1c1b3c33))
- add arcade matching game components and utilities ([ff16303](https://github.com/antialias/soroban-abacus-flashcards/commit/ff16303a7cd2880fcdfd51ef8a744e245905d87d))
- add arcade room system database schema and managers (Phase 1) ([a9175a0](https://github.com/antialias/soroban-abacus-flashcards/commit/a9175a050c1668a6ba066078e0bdbd944b4eb960))
- add arcade room/session info and network players to nav ([6800747](https://github.com/antialias/soroban-abacus-flashcards/commit/6800747f80a29c91ba0311a8330d594c1074097d))
- add Biome + ESLint linting setup ([fc1838f](https://github.com/antialias/soroban-abacus-flashcards/commit/fc1838f4f53a4f8d8f1c5303de3a63f12d9c9303))
- add build info API endpoint ([571664e](https://github.com/antialias/soroban-abacus-flashcards/commit/571664e725b63f22fa9f0bca8a1c518a54441dec))
- add build info generation script ([416dc89](https://github.com/antialias/soroban-abacus-flashcards/commit/416dc897e26ab93930b52faf77da3a6ffd4a0fb9))
- add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048))
- add deployment info modal with keyboard shortcut ([43be7ac](https://github.com/antialias/soroban-abacus-flashcards/commit/43be7ac83a9ba3e0ad970f4588729ba2ad394702))
- add exitSession to MemoryPairsContextValue interface ([abc2ea5](https://github.com/antialias/soroban-abacus-flashcards/commit/abc2ea50d07e87537ced649bcc9276ef95a3bc4e))
- add GameControlButtons component with unit tests ([1f45c17](https://github.com/antialias/soroban-abacus-flashcards/commit/1f45c17e0a68db2a452844f87217671223cf7bb0))
- add guest session system with JWT tokens ([10d8aaf](https://github.com/antialias/soroban-abacus-flashcards/commit/10d8aaf814275a9c3f08e0f1b39970c3ab1a8427))
- add networked hover state infrastructure for multiplayer presence ([d149799](https://github.com/antialias/soroban-abacus-flashcards/commit/d14979907c5df9b793a1c110028fc5b54457f507))
- add optimistic updates and remove dead code ([b62cf26](https://github.com/antialias/soroban-abacus-flashcards/commit/b62cf26fb6597bae9a590f8b8d630fd31a8dd321))
- add pause/resume game state architecture ([05eacac](https://github.com/antialias/soroban-abacus-flashcards/commit/05eacac438dbaf405ce91e188c53dbbe2e9f9507))
- add player types and migration utilities ([79f44b2](https://github.com/antialias/soroban-abacus-flashcards/commit/79f44b25d6c17f119c3ae225fb449be27c77c56d))
- add React Query setup with api helper ([a3878a8](https://github.com/antialias/soroban-abacus-flashcards/commit/a3878a8537fe123fa345d2d2990b3cd76132ba1e))
- add real-time WebSocket updates for room membership ([7ebb2be](https://github.com/antialias/soroban-abacus-flashcards/commit/7ebb2be3927762a5fe9b6fb7fb15d6b88abb7b6a))
- add Resume button and config change warning to setup UI ([b5ee04f](https://github.com/antialias/soroban-abacus-flashcards/commit/b5ee04f57651f53517468fcc4c456f0ccb65a8e2))
- add security tests and userId injection protection ([aa1ad31](https://github.com/antialias/soroban-abacus-flashcards/commit/aa1ad315ef75af5b6833a3a3628a9bbceb80c03c))
- add server-side validation for player modifications during active arcade sessions ([3b3cad4](https://github.com/antialias/soroban-abacus-flashcards/commit/3b3cad4b769b0ed9ed8e6dc2363bcaf13cc8e08a))
- add Setup button to exit arcade sessions ([ae1318e](https://github.com/antialias/soroban-abacus-flashcards/commit/ae1318e8bf2c584853ceeb38336d871110f13a39))
- display room info and network players in mini app nav ([5e3261f](https://github.com/antialias/soroban-abacus-flashcards/commit/5e3261f3bec8c19ec88c9a35a7e6ef8eda88a55e))
- dynamic player card rendering on games page ([81d17f2](https://github.com/antialias/soroban-abacus-flashcards/commit/81d17f23976cc340e23c63f8e27f1a15afd1a4d0))
- emit session-state after creating arcade session ([70d6f43](https://github.com/antialias/soroban-abacus-flashcards/commit/70d6f43d6d7ff918ab15edb6e27d4eab8c7a3de6))
- extend GameModeContext to support room-based multiplayer ([ee6094d](https://github.com/antialias/soroban-abacus-flashcards/commit/ee6094d59d26a9e80ba5d023ca6dc13143bea308))
- fade out hover avatar when player stops hovering ([820eeb4](https://github.com/antialias/soroban-abacus-flashcards/commit/820eeb4fb03ad8be6a86dd0a26e089052224f427))
- hide hover avatar when card is flipped to reveal value ([a2aada2](https://github.com/antialias/soroban-abacus-flashcards/commit/a2aada2e6922fb3af363e0d191275e06b8f8f040))
- implement auto-save for player settings modal ([a83dc09](https://github.com/antialias/soroban-abacus-flashcards/commit/a83dc097e43c265a297281da54754f58ac831754))
- implement game control callbacks in MemoryPairsGame ([4758ad2](https://github.com/antialias/soroban-abacus-flashcards/commit/4758ad2f266ef3f3f67c22533fbb5f475dd8bd5b))
- implement modal room enforcement (one room per user) ([f005fbb](https://github.com/antialias/soroban-abacus-flashcards/commit/f005fbbb773f4d250b80d71593490976af82d5a5))
- implement networked hover presence for multiplayer gameplay ([62f3730](https://github.com/antialias/soroban-abacus-flashcards/commit/62f3730542334a0580f5dad1c73adc333614ee58))
- implement pause/resume in game providers with optimistic updates ([ce30fca](https://github.com/antialias/soroban-abacus-flashcards/commit/ce30fcaf55270f9089249bd13ba73a25fbfa5ab4))
- implement rich Radix UI tooltips for player avatars ([d03c789](https://github.com/antialias/soroban-abacus-flashcards/commit/d03c7898799b378f912f47d7267a00bc7ce3d580))
- implement room-wide multi-user game state synchronization ([8175c43](https://github.com/antialias/soroban-abacus-flashcards/commit/8175c43533c474fff48eb128c97747033bfb434a))
- implement smooth hover avatar animations with react-spring ([442c6b4](https://github.com/antialias/soroban-abacus-flashcards/commit/442c6b4529ba5c820b1fe8a64805a3d85489a8ea))
- improve hover avatars with smooth animation and 3D elevation ([71b11f4](https://github.com/antialias/soroban-abacus-flashcards/commit/71b11f4ef08a5f9c3f1c1aaabca21ef023d5c0ce))
- improve room navigation and membership UI ([bc219c2](https://github.com/antialias/soroban-abacus-flashcards/commit/bc219c2ad66707f03e7a6cf587b9d190c736e26d))
- integrate GameControlButtons into navigation ([fbd8cd4](https://github.com/antialias/soroban-abacus-flashcards/commit/fbd8cd4a6bca44bbc0f7c4e8153900558805a84a))
- migrate abacus display settings to database ([92ef136](https://github.com/antialias/soroban-abacus-flashcards/commit/92ef1360a4792d0b36f3a35e100bd9f3c7451656))
- migrate contexts to React Query (remove localStorage) ([fe01a1f](https://github.com/antialias/soroban-abacus-flashcards/commit/fe01a1fe182293aeadd5cbfd73f0a54a858ae38e))
- migrate contexts to UUID-based player system ([2b94cad](https://github.com/antialias/soroban-abacus-flashcards/commit/2b94cad11bd05b1a324e360c56be686c3c6a4b64))
- refactor room addressing to /arcade/room ([e7d2a73](https://github.com/antialias/soroban-abacus-flashcards/commit/e7d2a73ddf2048691325a18e3d71a7ece444c131))
- remove typst dependencies ([eedce28](https://github.com/antialias/soroban-abacus-flashcards/commit/eedce28572035897001f6b8a08f79beaa2360d44))
- remove typst-related code and routes ([be6fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/be6fb1a881b983f9830d36c079b7b41f35153b8a))
- set up Drizzle ORM with SQLite database ([5d5afd4](https://github.com/antialias/soroban-abacus-flashcards/commit/5d5afd4e6860241ff45c7173d4aad2b7156a41b1))
- update nav components for UUID players ([e85d041](https://github.com/antialias/soroban-abacus-flashcards/commit/e85d0415f23049da861533bbec2a65e1d84adfe1))
# [1.7.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.6.0...abacus-react-v1.7.0) (2025-10-01)
### Bug Fixes
- **abacus-react:** apply global columnPosts styling and fix reckoning bar width ([bb9959f](https://github.com/antialias/soroban-abacus-flashcards/commit/bb9959f7fb8985e0c6496247306838d97e7121f7))
- **complement-race:** improve abacus display in equations ([491b299](https://github.com/antialias/soroban-abacus-flashcards/commit/491b299e28ee82c49069cf892609b1b2b3c0aee3))
### Features
- **complement-race:** add abacus displays to pressure gauge ([c5ebc63](https://github.com/antialias/soroban-abacus-flashcards/commit/c5ebc635afb6e78f9f4b1192ff39dcec53879a60))
# [1.6.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.5.1...abacus-react-v1.6.0) (2025-10-01)
### Bug Fixes
- align all bottom UI elements to same 20px baseline ([076c97a](https://github.com/antialias/soroban-abacus-flashcards/commit/076c97abac7a33f600b80083d8990a8c4a51be99))
- align bottom-positioned UI elements ([227cfab](https://github.com/antialias/soroban-abacus-flashcards/commit/227cfabf113bc875ea3a61f0de41a9093ad1dd30))
- change pressure gauge to fixed positioning to stay above terrain ([1b11031](https://github.com/antialias/soroban-abacus-flashcards/commit/1b110315982f631dadca96a37fc88db98a7f9cca))
- change question display to fixed positioning with higher z-index ([4ac8758](https://github.com/antialias/soroban-abacus-flashcards/commit/4ac875895781dba5e115eeb3336ef76744b782bb))
- correct emoji category group IDs to match Unicode CLDR ([b2a21b7](https://github.com/antialias/soroban-abacus-flashcards/commit/b2a21b79ad705a5b52767317af00e4d666d33907))
- defer URL update until game starts ([12c54b2](https://github.com/antialias/soroban-abacus-flashcards/commit/12c54b27b717e852b96585eacdf6e9d964e32c50))
- delay passenger display update until train resets ([e06a750](https://github.com/antialias/soroban-abacus-flashcards/commit/e06a7504549bb4e0fcc38bd03249b9c0386c3079))
- eliminate rail jaggies on sharp curves by increasing sampling density ([46d4af2](https://github.com/antialias/soroban-abacus-flashcards/commit/46d4af2bdad761366890171cc666ba24d5309257))
- ensure passengers only travel forward on train route ([8ad3144](https://github.com/antialias/soroban-abacus-flashcards/commit/8ad3144d2da9b4ceedd62a9f379f664fa9381afe))
- increase question display zIndex to stay above terrain ([8c8b8e0](https://github.com/antialias/soroban-abacus-flashcards/commit/8c8b8e08b4d51e6462d4b7dd258a25e64bf16dba))
- move fontWeight to style object for station names ([05a3ddb](https://github.com/antialias/soroban-abacus-flashcards/commit/05a3ddb086e28529efb321943f4e423dbe5ed6a6))
- only show configuration gear icon for players 1 and 2 ([d0a3bc7](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a3bc7dc1efc00c1db63fb50bc2ab3c6aabdd59))
- passengers now board/disembark based on their car position, not locomotive ([96782b0](https://github.com/antialias/soroban-abacus-flashcards/commit/96782b0e7a6d0db5a4435ca303b1d819947ce460))
- position tunnels at absolute viewBox edges ([1a5fa28](https://github.com/antialias/soroban-abacus-flashcards/commit/1a5fa2873bcda9a24cc578a7ecea43632077a0a1))
- prevent layout shift when selecting Steam Sprint mode ([73a5974](https://github.com/antialias/soroban-abacus-flashcards/commit/73a59745a5145b734b0893a489c5d018e3c9475c))
- prevent multiple passengers from boarding same car in single frame ([63b0b55](https://github.com/antialias/soroban-abacus-flashcards/commit/63b0b552a89a1165137de125bf57246a7cf6ac73))
- prevent premature passenger display during route transitions ([fe9ea67](https://github.com/antialias/soroban-abacus-flashcards/commit/fe9ea67f56847859b4fb4fa4f747022f0a2e5a70))
- prevent random passenger repopulation during route transitions ([db56ce8](https://github.com/antialias/soroban-abacus-flashcards/commit/db56ce89ee1d4e7583b60cde4e1d2610ee31123a))
- prevent route celebration from immediately reappearing ([1a80934](https://github.com/antialias/soroban-abacus-flashcards/commit/1a8093416e0feff774b6cdc6dfafdbafbb8baf7f))
- reduce landmark size from 4.0x to 2.0x multiplier ([c928e90](https://github.com/antialias/soroban-abacus-flashcards/commit/c928e907854e18264266958d813d4e1d4c03e760))
- remove double PageWithNav wrapper on matching page ([b58bcd9](https://github.com/antialias/soroban-abacus-flashcards/commit/b58bcd92ee0521a6413f4d6e9656c9ccb1c72851))
- remove duplicate CAR_SPACING and MAX_CARS declarations ([e704a28](https://github.com/antialias/soroban-abacus-flashcards/commit/e704a28524e1217b6f56ca5a51784db73f5eadce))
- remove duplicate previousPassengersRef declaration ([fad8636](https://github.com/antialias/soroban-abacus-flashcards/commit/fad86367638b1a48b7e1544976148f43b061c832))
- remove hard-coded car count from game loop ([6c90a68](https://github.com/antialias/soroban-abacus-flashcards/commit/6c90a68c49b5f7fbc262c38f9a8828f5c725cb6a))
- remove unnecessary zIndex from question display ([db52e14](https://github.com/antialias/soroban-abacus-flashcards/commit/db52e14dfe9aceaaa1f98fc79100c04adc84611a))
- reset momentum and pressure when starting new route ([3ea88d7](https://github.com/antialias/soroban-abacus-flashcards/commit/3ea88d7a5a6ed427b17cf408d993918870b75f7f))
- smooth rail curves and deterministic track generation ([4f79c08](https://github.com/antialias/soroban-abacus-flashcards/commit/4f79c08d73c090165a1c419e7aa8ef543bc23e7e))
- stabilize route completion threshold to prevent stuck trains ([b7233f9](https://github.com/antialias/soroban-abacus-flashcards/commit/b7233f9e4afe1dadfe29ecc4430c74074a2674fc))
- use displayPassengers for station rendering in RailroadTrackPath ([a9e0d19](https://github.com/antialias/soroban-abacus-flashcards/commit/a9e0d197348377cb66581150df47d2d1127ad09a))
- use style fontSize instead of attribute for landmarks ([ebc6894](https://github.com/antialias/soroban-abacus-flashcards/commit/ebc6894746d1d490c3a5cae19c38bb86fe8fdc65))
- wrap animated pressure value in animated.span to prevent React error ([5c5954b](https://github.com/antialias/soroban-abacus-flashcards/commit/5c5954be74708fb7019802a6dd80b10e9b2c1d6a))
### Features
- add category browsing and scrolling to emoji picker ([616a50e](https://github.com/antialias/soroban-abacus-flashcards/commit/616a50e234f79e271cb0bd9c959866d2d2e5ac82))
- add complement display options and unify equation display ([2ed7b2c](https://github.com/antialias/soroban-abacus-flashcards/commit/2ed7b2cbf8ad7c18b14c0e86b04a3ba96cc4de0b))
- add Complement Race game with three unique game modes ([582bce4](https://github.com/antialias/soroban-abacus-flashcards/commit/582bce411f5e89fe1ee677321d06ca7d0fd78701))
- add configuration access to active player emojis in prominent nav ([6049a7f](https://github.com/antialias/soroban-abacus-flashcards/commit/6049a7f6b7481ca42a7907d11d93676549bf6629))
- add configuration access to fullscreen player selection ([b85968b](https://github.com/antialias/soroban-abacus-flashcards/commit/b85968bcb6afa379d50242185e7743f6fe4ba982))
- add CSS animations and visual feedback system ([80e33e2](https://github.com/antialias/soroban-abacus-flashcards/commit/80e33e25b3d30a44a1a5294997d56949e2aeef8b))
- add direct URL routes for each game mode ([a08f053](https://github.com/antialias/soroban-abacus-flashcards/commit/a08f0535bf6dfb424e8f9764b37ce6912db6021c))
- add initialStyle prop to ComplementRaceProvider ([f3bc2f6](https://github.com/antialias/soroban-abacus-flashcards/commit/f3bc2f6d926b9c8d9229636e3ed688bf9ea3baf3))
- add interactive remove buttons for players in mini nav ([fa1cf96](https://github.com/antialias/soroban-abacus-flashcards/commit/fa1cf967898bdc396b0bfdcbfe2147a06e189190))
- add magnifying glass preview on emoji hover ([2c88b6b](https://github.com/antialias/soroban-abacus-flashcards/commit/2c88b6b5f3ba3a47007aa832c2e204bf2ebcc90b))
- add mini app nav to arcade page ([a854fe3](https://github.com/antialias/soroban-abacus-flashcards/commit/a854fe3dc935b10db8dc71569c0c8abd81938e4c))
- add passenger boarding system with station-based pickup ([23a9016](https://github.com/antialias/soroban-abacus-flashcards/commit/23a9016245e061b65151735db31aebdc9d36ed1d))
- add prominent game context display to mini nav with smooth transitions ([8792393](https://github.com/antialias/soroban-abacus-flashcards/commit/8792393956b01a5a8ca67d78209e6defb6a11903))
- add realistic mountains with peaks and ground terrain ([99cdfa8](https://github.com/antialias/soroban-abacus-flashcards/commit/99cdfa8a0ba63e7b523466d8b2108bca05b0310a))
- add smooth spring animations to pressure gauge ([863a2e1](https://github.com/antialias/soroban-abacus-flashcards/commit/863a2e1319448381c853540301886fb4a169e112))
- add train car system with smooth boarding/disembarking animations ([1613912](https://github.com/antialias/soroban-abacus-flashcards/commit/1613912740756d984205e3625791c1d8a2a6fa51))
- add Web Audio API sound effects system with 16 sound types ([90ba866](https://github.com/antialias/soroban-abacus-flashcards/commit/90ba86640c7062a00d2c7553827a61524ec17da1))
- create mode selection landing page for Complement Race ([1ff9695](https://github.com/antialias/soroban-abacus-flashcards/commit/1ff9695f6930f5232b2ad80ddcbd32bbc182d4e7))
- create PlayerConfigDialog component for player customization ([4f2a661](https://github.com/antialias/soroban-abacus-flashcards/commit/4f2a661494add3f61b714d0bead07b0e0bc3f92d))
- display passengers visually on train and at stations ([1599904](https://github.com/antialias/soroban-abacus-flashcards/commit/159990489fec9162d9ed9ecf77c7592b776bbb23))
- dynamically calculate train cars based on max concurrent passengers ([9ea1553](https://github.com/antialias/soroban-abacus-flashcards/commit/9ea15535d18efc25739342b0945c6d7ec7896c5d))
- enable prominent nav and fix layout on arcade page ([5c8c18c](https://github.com/antialias/soroban-abacus-flashcards/commit/5c8c18cbb89da38ccaab3c2ad7081e1a6d45a73e))
- enhance emoji picker with super powered magnifying glass and hide empty categories ([d8b4e42](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4e425bf019c593abdcb7693a04e4780b18f06))
- enhance passenger card UI with boarding status indicators ([4bbdabc](https://github.com/antialias/soroban-abacus-flashcards/commit/4bbdabc3b576ba8cdda5a053878b3f2e9004afca))
- extend ground terrain to cover entire track area ([ee48417](https://github.com/antialias/soroban-abacus-flashcards/commit/ee48417abfe9f5a2788d6de8ff522f60c13b6066))
- extend player customization to support all 4 players ([72f8dee](https://github.com/antialias/soroban-abacus-flashcards/commit/72f8dee183b17c88d51748b5131b5a51906a24b3))
- extend railroad track to viewport edges ([eadd7da](https://github.com/antialias/soroban-abacus-flashcards/commit/eadd7da6dbc4103342dd673f03f97850cdc20f23))
- extend track and tunnels to absolute viewport edges ([f7419bc](https://github.com/antialias/soroban-abacus-flashcards/commit/f7419bc6a0c03cbe2dbbc095e47891ee67d10b51))
- implement smooth train exit with fade-out through right tunnel ([0176694](https://github.com/antialias/soroban-abacus-flashcards/commit/01766944f0267b1f2adeb6a30c9f89d48038a7f8))
- improve game availability logic and messaging ([9a3fa93](https://github.com/antialias/soroban-abacus-flashcards/commit/9a3fa93e53d05475844b54052acbc838d7487d23))
- increase landmark emoji size for better visibility ([0bcd7a3](https://github.com/antialias/soroban-abacus-flashcards/commit/0bcd7a30d42a0a0d5bdfcf5abd8eb3eb9a8b6a73))
- integrate remaining game sound effects ([600bc35](https://github.com/antialias/soroban-abacus-flashcards/commit/600bc35bc3111a455290638e7be31d0032ff656c))
- integrate sound effects into game flow (countdown, answers, performance) ([8c3a855](https://github.com/antialias/soroban-abacus-flashcards/commit/8c3a85523930fca7f2dcc53c79454fb9be523d55))
- make Steam Sprint infinite mode ([32c3a35](https://github.com/antialias/soroban-abacus-flashcards/commit/32c3a35eabd10f8c9b50a55cfb525a76ea050914))
- make SVG span full viewport width for sprint mode ([7488bb3](https://github.com/antialias/soroban-abacus-flashcards/commit/7488bb38033b2d3d3fc18b9f09373506d69e25a5))
- preserve track and passengers during route transitions ([f2e7165](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e71657dc1587c2b6df1f4227160b8a261c6084))
- redesign passenger cards with vintage train station aesthetic ([651bc21](https://github.com/antialias/soroban-abacus-flashcards/commit/651bc2158361fbaafb0b011ab90006b21d3a7c85))
- skip countdown for train mode (sprint) ([65dafc9](https://github.com/antialias/soroban-abacus-flashcards/commit/65dafc92153399336f200a566bc91f869fdfcbb1))
- skip intro screen and start directly at game setup ([4b6888a](https://github.com/antialias/soroban-abacus-flashcards/commit/4b6888af05c6be9616cf20b9d2b8b66ac13cf253))
- sync URL with selected game mode ([3920bba](https://github.com/antialias/soroban-abacus-flashcards/commit/3920bbad33ef5dd6323d2baea498943f5115dbec))
- UI polish for Sprint mode (viewport, backgrounds, data attributes) ([90ad789](https://github.com/antialias/soroban-abacus-flashcards/commit/90ad789ff1f94f52b98de9fd934a623eab452387))
- use CSS transitions for smooth fullscreen player selection collapse ([3189832](https://github.com/antialias/soroban-abacus-flashcards/commit/31898328a391614a0fe8d24ec9d2881bfb6e6984))
- wire player configuration through nav component hierarchy ([edfdd81](https://github.com/antialias/soroban-abacus-flashcards/commit/edfdd8122774e36dbda9acea741a5e248be95676))
### Performance Improvements
- optimize React rendering with memoization and consolidated effects ([93cb070](https://github.com/antialias/soroban-abacus-flashcards/commit/93cb070ca503effa05541f7ed217bb4260359581))
## [1.5.1](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.5.0...abacus-react-v1.5.1) (2025-09-29)
### Bug Fixes
- resolve JSX parsing error with emoji in guide page ([bf046c9](https://github.com/antialias/soroban-abacus-flashcards/commit/bf046c999b51ba422284a139ebadde2c35187ac7))
- resolve TypeScript errors in PlayerStatusBar component ([a935e5a](https://github.com/antialias/soroban-abacus-flashcards/commit/a935e5aed8c4584d21c8fc4359453b7dec494464))
- restore navigation to all pages using PageWithNav ([183706d](https://github.com/antialias/soroban-abacus-flashcards/commit/183706dade12080a748b0c074d0bd71fb0471d7e))
- update workflow to support Personal Access Token for GitHub Packages publishing auth ([ae4b71b](https://github.com/antialias/soroban-abacus-flashcards/commit/ae4b71b98655364887a729ef9d2b67b6a753d6e9))
# [1.5.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.4.0...abacus-react-v1.5.0) (2025-09-29)
### Bug Fixes
- remove frozen lockfile flag from publishing workflow to resolve dependency installation issues ([18af973](https://github.com/antialias/soroban-abacus-flashcards/commit/18af9730ffbcd822da292161815ffd09ad97f66c))
- resolve mini navigation game name persistence across all routes ([3fa314a](https://github.com/antialias/soroban-abacus-flashcards/commit/3fa314aaa5de7b9c26a5390a52996c7d5ef9ea51))
- update pnpm version to 8.15.6 to resolve ERR_INVALID_THIS error in workflow ([0b9bfed](https://github.com/antialias/soroban-abacus-flashcards/commit/0b9bfed12dfd48d9eacae69b378e28e188d3f2b1))
- update tutorial tests to use consolidated AbacusDisplayProvider ([899fc69](https://github.com/antialias/soroban-abacus-flashcards/commit/899fc6975f1fa14ddb42b2ead03524c9389e7c38))
### Features
- **abacus-react:** update description to mention GitHub Packages support ([af77256](https://github.com/antialias/soroban-abacus-flashcards/commit/af7725622e15801f9e56af12930c4e14c5e67c53))
- add comprehensive E2E testing with Playwright ([d58053f](https://github.com/antialias/soroban-abacus-flashcards/commit/d58053fad3ab06b9884b46dbb6807e938426dbb5))
- add comprehensive Storybook stories for PlayerStatusBar ([8973241](https://github.com/antialias/soroban-abacus-flashcards/commit/8973241297d50604028bde95b9ebbf033688db89))
- add consecutive match tracking system for escalating celebrations ([111c0ce](https://github.com/antialias/soroban-abacus-flashcards/commit/111c0ced715be7cade006387d01f4e2f52c59be9))
- add PlayerStatusBar with escalating celebration animations ([7f8c90a](https://github.com/antialias/soroban-abacus-flashcards/commit/7f8c90acea84b208df0e3e23e80a02cf425c0950))
- add sound settings support to AbacusReact component ([90b9ffa](https://github.com/antialias/soroban-abacus-flashcards/commit/90b9ffa0d8659891bfe8062217e45245bbff5d5a))
- implement cozy sound effects for abacus with variable intensity ([c95be1d](https://github.com/antialias/soroban-abacus-flashcards/commit/c95be1df6dbe74aad08b9a1feb1f33688212be0b))
- integrate user profiles with PlayerStatusBar and game results ([beff646](https://github.com/antialias/soroban-abacus-flashcards/commit/beff64652c72a5cd0c008891b6dc2f5167e28b62))
# [1.4.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.3.0...abacus-react-v1.4.0) (2025-09-29)
### Bug Fixes
- export missing hooks and types from @soroban/abacus-react package ([423ba55](https://github.com/antialias/soroban-abacus-flashcards/commit/423ba5535023928f1e0198b2bd01c3c6cf7ee848))
- migrate viewport from metadata to separate viewport export ([1fe12c4](https://github.com/antialias/soroban-abacus-flashcards/commit/1fe12c4837b1229d0f0ab93c55d0ffb504eb8721))
### Features
- add middleware for pathname header support in [@nav](https://github.com/nav) fallback ([b7e7c4b](https://github.com/antialias/soroban-abacus-flashcards/commit/b7e7c4beff1e37e90e9e20a890c5af7a134a7fca))
- implement [@nav](https://github.com/nav) parallel routes for game name display in mini navigation ([885fc72](https://github.com/antialias/soroban-abacus-flashcards/commit/885fc725dc0bb41bbb5e500c2c907c6182192854))
# [1.3.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.2.0...abacus-react-v1.3.0) (2025-09-29)
### Bug Fixes
- ensure game names persist in navigation on page reload ([9191b12](https://github.com/antialias/soroban-abacus-flashcards/commit/9191b124934b9a5577a91f67e8fb6f83b173cc4f))
- implement route-based theme detection for page reload persistence ([3dcff2f](https://github.com/antialias/soroban-abacus-flashcards/commit/3dcff2ff888558d7b746a732cfd53a1897c2b1df))
- improve navigation chrome background color extraction from gradients ([00bfcbc](https://github.com/antialias/soroban-abacus-flashcards/commit/00bfcbcdee28d63094c09a4ae0359789ebcf4a22))
- resolve SSR/client hydration mismatch for themed navigation ([301e65d](https://github.com/antialias/soroban-abacus-flashcards/commit/301e65dfa66d0de6b6efbbfbd09b717308ab57f1))
### Features
- complete themed navigation system with game-specific chrome ([0a4bf17](https://github.com/antialias/soroban-abacus-flashcards/commit/0a4bf1765cbd86bf6f67fb3b99c577cfe3cce075))
- implement cozy sound effects for abacus with variable intensity ([cea5fad](https://github.com/antialias/soroban-abacus-flashcards/commit/cea5fadbe4b4d5ae9e0ee988e9b1c4db09f21ba6))
# [1.2.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.1.3...abacus-react-v1.2.0) (2025-09-28)
### Bug Fixes
- **abacus-react:** add debugging and explicit authentication for npm publish ([b82e9bb](https://github.com/antialias/soroban-abacus-flashcards/commit/b82e9bb9d6adf3793065067f96c6fbbfd1a78bca))
- **abacus-react:** add packages: write permission for GitHub Packages publishing ([8e16487](https://github.com/antialias/soroban-abacus-flashcards/commit/8e1648737de9305f82872cb9b86b98b5045f77a7))
- add missing GameThemeContext file for themed navigation ([d4fbdd1](https://github.com/antialias/soroban-abacus-flashcards/commit/d4fbdd14630e2f2fcdbc0de23ccc4ccd9eb74b48))
### Features
- implement game theming system with context-based navigation chrome ([3fa11c4](https://github.com/antialias/soroban-abacus-flashcards/commit/3fa11c4fbcbeabeb3bdd0db38374fb9a13cbb754))
## [1.1.3](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.1.2...abacus-react-v1.1.3) (2025-09-28)
### Bug Fixes
- **abacus-react:** force npm to use GitHub Packages registry ([5e6c901](https://github.com/antialias/soroban-abacus-flashcards/commit/5e6c901f73a68b60ec05f19c4a991ca8affc1589))
## [1.1.2](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.1.1...abacus-react-v1.1.2) (2025-09-28)
### Bug Fixes
- **abacus-react:** improve workspace dependency cleanup and add validation ([11fd6f9](https://github.com/antialias/soroban-abacus-flashcards/commit/11fd6f9b3deb1122d3788a7e0698de891eeb0f3a))
## [1.1.1](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.1.0...abacus-react-v1.1.1) (2025-09-28)
### Bug Fixes
- **abacus-react:** resolve workspace dependencies before npm publish ([834b062](https://github.com/antialias/soroban-abacus-flashcards/commit/834b062b2d22356b9d96bb9c3c444eccaa51d793))
# [1.1.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v1.0.0...abacus-react-v1.1.0) (2025-09-28)
### Bug Fixes
- **abacus-react:** improve publishing workflow with better version sync ([7a4ecd2](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4ecd2b5970ed8b6bfde8938b36917f8e7a7176))
- add testing mode for on-screen keyboard and fix toggle functionality ([904074c](https://github.com/antialias/soroban-abacus-flashcards/commit/904074ca821b62cd6b1e129354eb36c5dd4b5e7f))
- redesign matching game setup page for StandardGameLayout ([cc1f27f](https://github.com/antialias/soroban-abacus-flashcards/commit/cc1f27f0f82256f9344531814e8b965fa547d555))
- update memory pairs game to use StandardGameLayout ([8df76c0](https://github.com/antialias/soroban-abacus-flashcards/commit/8df76c08fdf4108b88ce95de252cb8bd559fc5e4))
- update memory quiz to use StandardGameLayout ([3f86163](https://github.com/antialias/soroban-abacus-flashcards/commit/3f86163c142e577a64adfb3bf262656d2e100ced))
### Features
- create StandardGameLayout for perfect viewport sizing ([728a920](https://github.com/antialias/soroban-abacus-flashcards/commit/728a92076a6ac9ef71f0c75d2e9503575881130a))
- implement innovative dynamic two-panel layout for on-screen keyboard ([4bb8f6d](https://github.com/antialias/soroban-abacus-flashcards/commit/4bb8f6daf1f3eecb5cbaf31bf4057f43e43aeb07))
- implement simple fixed bottom keyboard bar ([9ef72d7](https://github.com/antialias/soroban-abacus-flashcards/commit/9ef72d7e88a6a9b30cfd7a7d3944197cc1e0037a))
# 1.0.0 (2025-09-28)
### Bug Fixes
- **abacus-react:** simplify semantic-release config to resolve dependency issues ([88cab38](https://github.com/antialias/soroban-abacus-flashcards/commit/88cab380ef383c941b41671d58d3e35fcaefb2d3))
- **abacus-react:** temporarily allow test failures during setup phase ([e3db7f4](https://github.com/antialias/soroban-abacus-flashcards/commit/e3db7f4daf16fce82bccfe47dcaa90d7f4896a79))
- add cssgen step to generate styles.css for Storybook ([26077de](https://github.com/antialias/soroban-abacus-flashcards/commit/26077de78bccf8549e1e9a0ac9c08742c61c8d28))
- add explicit type annotation for examples array in LivePreview ([6c49e03](https://github.com/antialias/soroban-abacus-flashcards/commit/6c49e0335e9ef75e0566ffb547bb9c65029dbf64))
- add missing color-palette parameter to generate-flashcards function ([18583d0](https://github.com/antialias/soroban-abacus-flashcards/commit/18583d011a21db5a1d57eb21b241dd1d19573a07))
- add navigation to games from character selection modal ([b64fb1c](https://github.com/antialias/soroban-abacus-flashcards/commit/b64fb1c769c6965c81eefea10b21886380ce7216))
- add onConfigurePlayer prop to ChampionArena ([6e1050c](https://github.com/antialias/soroban-abacus-flashcards/commit/6e1050c76df6065c99332900303ef41d095226f5))
- add optional chaining to prevent TypeScript error ([d42dca2](https://github.com/antialias/soroban-abacus-flashcards/commit/d42dca2b4e85f01c38223fc5173da2243faa63bf))
- add robust fallback system for term highlighting in guidance ([decd8a3](https://github.com/antialias/soroban-abacus-flashcards/commit/decd8a36cacc2d08c60ff6bfb192e7e16ab84205))
- add tooltip targeting logic to only show on beads with arrows ([4425627](https://github.com/antialias/soroban-abacus-flashcards/commit/44256277a1fd60aa5be7484714a6fa6e434d656c))
- add xmlns attributes to SVG examples for GitHub compatibility ([c2f33ce](https://github.com/antialias/soroban-abacus-flashcards/commit/c2f33ceff2391f6a480a3d1239e3c750778940cb))
- adjust tutorial editor page height to account for app navigation ([9777bef](https://github.com/antialias/soroban-abacus-flashcards/commit/9777befbc54f53f06d053ad2f479db90cdd5252a))
- allow semantic release to proceed despite build failures ([73a6904](https://github.com/antialias/soroban-abacus-flashcards/commit/73a690405aa200e24d77f076572b613ad795efdf))
- apply CSS scaling to abacus components in memory quiz ([599fbfb](https://github.com/antialias/soroban-abacus-flashcards/commit/599fbfb802619ce8bbd04d880ed940552fe5b330))
- clean up component interfaces and settings ([ce6c2a1](https://github.com/antialias/soroban-abacus-flashcards/commit/ce6c2a111673f7fd1a31460439da2addfd20d376))
- convert foreignObject to native SVG text elements ([3ccc753](https://github.com/antialias/soroban-abacus-flashcards/commit/3ccc753a8297c45de5b857423feb2af6a0ae3c40))
- correct column indexing and add boundary checks for interactive abacus ([bbfb361](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfb3614a22c4a3488130e7d4934775407184b3d))
- correct diamond bead column alignment to match Typst positioning ([97690d6](https://github.com/antialias/soroban-abacus-flashcards/commit/97690d6b595ae1fca085d8598cade13b846f3b44))
- correct heaven bead positioning to match earth bead gap consistency ([0c4eea5](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4eea5a04ab94479c1fdf73306f32a35f392a50))
- correct highlightBeads format in AbacusTest.stories.tsx ([7122ad7](https://github.com/antialias/soroban-abacus-flashcards/commit/7122ad7fb4bf53695ce811c9eec361343eba0626))
- correct mathematical inconsistency in cascading complement test ([56cb69c](https://github.com/antialias/soroban-abacus-flashcards/commit/56cb69cb3e4fa256ea58420fa8310efba424bb59))
- correct pedagogical algorithm specification and tests ([9e87d3a](https://github.com/antialias/soroban-abacus-flashcards/commit/9e87d3ac37ddba69036ee315ba65b26073782520))
- correct segment expression formatting and rule detection ([e60f438](https://github.com/antialias/soroban-abacus-flashcards/commit/e60f4384c30260ae0632c10d0a60a8cffd4bb141))
- correct static file paths in Docker for Next.js standalone mode ([91223b6](https://github.com/antialias/soroban-abacus-flashcards/commit/91223b6f5da19738978091b5f6f785a77aff1ed2))
- correct styled-system import paths in games page ([82aa73e](https://github.com/antialias/soroban-abacus-flashcards/commit/82aa73eb0ee041fabf16d984ab6f5afebfb97dad))
- correct styled-system import paths in memory quiz page ([a967838](https://github.com/antialias/soroban-abacus-flashcards/commit/a967838c43b7a974ba6cf8f6bb6aaabea73d1f92))
- correct SVG text positioning to match React component alignment ([8024d0a](https://github.com/antialias/soroban-abacus-flashcards/commit/8024d0a25cba3b9e06df3a346d4e11545874698e))
- correct Tab navigation direction in numeral input system ([d4658c6](https://github.com/antialias/soroban-abacus-flashcards/commit/d4658c63b49a8270b26990b34a3b43fa3eb3c696))
- correct TanStack Form state selectors in create page ([178f0ff](https://github.com/antialias/soroban-abacus-flashcards/commit/178f0fff5942e3eb4612962635cb19a5f2891a47))
- correct term position calculation for complement segments ([7189090](https://github.com/antialias/soroban-abacus-flashcards/commit/718909015c6b967d46cb96401dacb8d3f9daeee9))
- correct tutorial bead highlighting to use rightmost column (ones place) ([b6b1111](https://github.com/antialias/soroban-abacus-flashcards/commit/b6b1111594b5530abe1f515dbc53e84ab1aebcf5))
- correct tutorial highlighting placeValue to columnIndex conversion ([35257b8](https://github.com/antialias/soroban-abacus-flashcards/commit/35257b88739573f6dc0dd16ec41ce754b2cb5b95))
- correct tutorial step "7 + 4" to highlight all required beads ([9c05bee](https://github.com/antialias/soroban-abacus-flashcards/commit/9c05bee73cdf3a34f46f993db965dd16b9d7b451))
- correct workspace configuration and remove non-existent packages ([39526eb](https://github.com/antialias/soroban-abacus-flashcards/commit/39526eb4966249e30656d77d65467bea847f7295))
- crop interactive abacus SVG whitespace with simple CSS scaling ([bb3d463](https://github.com/antialias/soroban-abacus-flashcards/commit/bb3d4636cdcdaa3ff12bef8498ac2c000fca2e96))
- disable pointer events on direction indicator arrows ([944d922](https://github.com/antialias/soroban-abacus-flashcards/commit/944d922f52a6584172f82ba8bb4716bcd8cb1d88))
- disable pointer events on overlay content div ([b5db935](https://github.com/antialias/soroban-abacus-flashcards/commit/b5db93562b31ec8b5dab091d76e2b3d9d0341a6c))
- display actual numbers in SVG examples ([3308e22](https://github.com/antialias/soroban-abacus-flashcards/commit/3308e22fd2bd4353c8cb2dc1ec9ac6b507ebc3a8))
- downgrade Docker action versions to available ones ([57d1460](https://github.com/antialias/soroban-abacus-flashcards/commit/57d146027ad43ab3c36c3aa408f9eaebe3ea0342))
- enable individual term hover events within complement groups ([0655968](https://github.com/antialias/soroban-abacus-flashcards/commit/06559686535dd943a1ff89445038b9da00881c0e))
- enable multi-bead highlighting in tutorial system ([ab99053](https://github.com/antialias/soroban-abacus-flashcards/commit/ab99053d7498b3e9f28373f94aa422adac618c0a))
- enhance collision detection to include all active beads ([3d9d69c](https://github.com/antialias/soroban-abacus-flashcards/commit/3d9d69c6fb3ec9340e36a388da4c1b3d4bdb468a))
- ensure abacus visibility in memory quiz display phase ([fea7826](https://github.com/antialias/soroban-abacus-flashcards/commit/fea7826bd85a7ec29fe0dd58dad589b80326ea2f))
- ensure celebration tooltip shows when steps complete ([5082378](https://github.com/antialias/soroban-abacus-flashcards/commit/5082378ec31a13d152271e03f85477022e9d6fd8))
- ensure consistent r×c grid layout for memory matching game ([f1a0633](https://github.com/antialias/soroban-abacus-flashcards/commit/f1a0633596fd1bb53418e56e28f3f27d3fce8b54))
- exclude test files from TypeScript build ([0e097da](https://github.com/antialias/soroban-abacus-flashcards/commit/0e097daf8f222d89211221c2fc3fd0057df267cf))
- expand heaven-earth-gap to 30pt to accommodate equal 19pt gaps for both heaven and earth inactive beads ([a048e11](https://github.com/antialias/soroban-abacus-flashcards/commit/a048e11f445cc29c222a84081577d2db7c8aff5a))
- extract clean SVG content from component output ([f57b071](https://github.com/antialias/soroban-abacus-flashcards/commit/f57b07166bef0bf41b21d2145d0b730b48db18fb))
- gallery now loads actual Typst-generated SVGs instead of fake placeholders ([87eb51d](https://github.com/antialias/soroban-abacus-flashcards/commit/87eb51d39912637874a49d0e1289b45f16b4f802))
- generate Panda CSS styled-system before building in Docker ([c7a45e9](https://github.com/antialias/soroban-abacus-flashcards/commit/c7a45e9c41805389554f759e5758bd989205ad97))
- handle both direct and module execution for web format ([a1fd4c8](https://github.com/antialias/soroban-abacus-flashcards/commit/a1fd4c84d3d21fa0dd25e0d633a9ce016174fd52))
- hide celebration tooltip when user moves away from target value ([f9e42f6](https://github.com/antialias/soroban-abacus-flashcards/commit/f9e42f6e923664439ae0a4f104514b3722d14bd7))
- implement bead highlighting by modifying getBeadColor function ([7ac5c29](https://github.com/antialias/soroban-abacus-flashcards/commit/7ac5c29e9d43e88b123cacb62e27608b60fe1ea2)), closes [#FFD700](https://github.com/antialias/soroban-abacus-flashcards/issues/FFD700)
- implement consistent single-card preview generation ([83da1eb](https://github.com/antialias/soroban-abacus-flashcards/commit/83da1eb086bfaa2332fc6010fba5585ef8b52111))
- implement focus handling for numeral input in place-value system ([415759c](https://github.com/antialias/soroban-abacus-flashcards/commit/415759c43b5add9a45b48a646e872f13e7743669))
- implement gap-filling logic for sorting challenge boundary issues ([df41f2e](https://github.com/antialias/soroban-abacus-flashcards/commit/df41f2eee32ea4ea3fec440e3e99198b756c3881))
- implement mathematical SVG bounds calculation for precise viewBox positioning ([1b0a642](https://github.com/antialias/soroban-abacus-flashcards/commit/1b0a6423f929b89b44ec152bd4afb4f5ea10db34))
- implement prefix-conflict detection for speed memory quiz ([01b00b5](https://github.com/antialias/soroban-abacus-flashcards/commit/01b00b5a40f42cd613ac7631e8d21ab8246dfc13))
- implement proper bi-directional drag and drop with useDroppable ([53fc41c](https://github.com/antialias/soroban-abacus-flashcards/commit/53fc41c58fa0411ac435a823642c4960f2a4293c))
- implement proper React controlled input pattern for AbacusReact ([c18919e](https://github.com/antialias/soroban-abacus-flashcards/commit/c18919e2a93408f7084454f5eabf57233051e164))
- implement proper SVG cropping and fix abacus positioning ([793ffd3](https://github.com/antialias/soroban-abacus-flashcards/commit/793ffd3c1f6b16ffdd058282b9f17a7df46a32bc))
- implement ref-based fullscreen element tracking for proper persistence ([7b947f2](https://github.com/antialias/soroban-abacus-flashcards/commit/7b947f2617e43b7adf29514b57f57c23f4ed1457))
- implement smooth cross-zone drag animations without scaling issues ([7219a41](https://github.com/antialias/soroban-abacus-flashcards/commit/7219a4131e3ad84b59fa16333b20f1ed4bb38cfd))
- improve abacus sizing across all components with CSS transforms ([cd6165e](https://github.com/antialias/soroban-abacus-flashcards/commit/cd6165ee3e9dbb6e8dce5261e9ef7643fc59fe52))
- improve error handling in ServerSorobanSVG component ([ec51105](https://github.com/antialias/soroban-abacus-flashcards/commit/ec5110544b33861feb96ea1b2a9e0b97c51a956f))
- improve game mode selection UX by removing redundancy ([9fe7068](https://github.com/antialias/soroban-abacus-flashcards/commit/9fe7068ded1b286a8896e03d54e16e0e13dd7e50))
- improve pedagogical correctness and cascade carry handling ([85ed254](https://github.com/antialias/soroban-abacus-flashcards/commit/85ed25471fa6b62fb4d52aef91cd26386498d81b))
- improve pedagogical segment detection and instruction quality ([0ac51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/0ac51aefa75eab41769b448a73c171c32960f71e))
- improve race mechanics and fix display issues ([511eb2e](https://github.com/antialias/soroban-abacus-flashcards/commit/511eb2e8a98dee9da7fde16baf0372c5efe104ba))
- improve sorting game UI with larger abacus and better slot design ([d5e2fda](https://github.com/antialias/soroban-abacus-flashcards/commit/d5e2fdadd64129e4402760bd9d8423ae7b7f3b32))
- improve visual balance of inactive heaven bead positioning ([a789087](https://github.com/antialias/soroban-abacus-flashcards/commit/a7890873ed8bc37d7fb99a2765ef3a1eecfa4803))
- keep tooltip visible when step completed to show celebration ([b5d7512](https://github.com/antialias/soroban-abacus-flashcards/commit/b5d75120fd0d16c9419469ec34815dec8d97d4fd))
- make inactive heaven bead gaps truly equal to earth bead gaps ([209ea0f](https://github.com/antialias/soroban-abacus-flashcards/commit/209ea0f13b1f669725206fbb0ee72fce51f4d878))
- make lightbulb emoji inline with help text ([43e046a](https://github.com/antialias/soroban-abacus-flashcards/commit/43e046ae6cc623911ee9a23072ee822ee10bad01))
- make sorting game action buttons visible during gameplay ([0c1f44b](https://github.com/antialias/soroban-abacus-flashcards/commit/0c1f44b8c90455d250c39607d348c83193508ac5))
- match React component font sizing for SVG numbers ([dedc0e7](https://github.com/antialias/soroban-abacus-flashcards/commit/dedc0e7873062690b9bdb06207f09d2d6d2fc43c))
- maximize inactive heaven bead gap from reckoning bar ([8f88eeb](https://github.com/antialias/soroban-abacus-flashcards/commit/8f88eeb071a479faf3496902838864b7c7d584ad))
- move inactive heaven beads HIGHER for larger gap from reckoning bar ([2a82902](https://github.com/antialias/soroban-abacus-flashcards/commit/2a829023751c0c57a859c85561701e1e77e7b221))
- move inactive heaven beads to 2pt from top for 18pt gap from reckoning bar ([708cc91](https://github.com/antialias/soroban-abacus-flashcards/commit/708cc91bcc02396476b02061d92cee27cee1c92a))
- perfect crop mark detection and SVG dimension consistency ([79f38c1](https://github.com/antialias/soroban-abacus-flashcards/commit/79f38c13e7ec2917becaf1768047809019b6d98d))
- position inactive heaven beads above reckoning bar, not below ([2d7d4ef](https://github.com/antialias/soroban-abacus-flashcards/commit/2d7d4efaccb65435f66bb555141895426649d70d))
- position inactive heaven beads relative to reckoning bar with same 19pt gap as earth beads ([3424ca1](https://github.com/antialias/soroban-abacus-flashcards/commit/3424ca1d3430942dba11c9bd892a9fe17843b27c))
- position inactive heaven beads with maximum gap using available space ([421ec11](https://github.com/antialias/soroban-abacus-flashcards/commit/421ec11efc49557519df728fb605bf8030ef7573))
- position success toast near abacus instead of app nav ([ec40a8d](https://github.com/antialias/soroban-abacus-flashcards/commit/ec40a8d3cbb2c690e76b5fa274cf466df179cda7))
- preserve fullscreen mode when navigating from arcade to memory matching game ([2505335](https://github.com/antialias/soroban-abacus-flashcards/commit/25053352fe88a2f66a2323c4edfb53f3cd98b60d))
- prevent premature step completion for multi-step problems ([41dde87](https://github.com/antialias/soroban-abacus-flashcards/commit/41dde87778c8b65fea13f8819ab58300c400093a))
- prevent race end modal from breaking endless route progression ([e06be9d](https://github.com/antialias/soroban-abacus-flashcards/commit/e06be9d121d5738413fcd43842bc06cc520e7bcb))
- regenerate example SVGs with actual soroban renderings ([d94baa1](https://github.com/antialias/soroban-abacus-flashcards/commit/d94baa1a80cbbbb3edc3c91d5e51cce5e5b1c4af))
- remove broken display switching and add train emoji flip ([3227cd5](https://github.com/antialias/soroban-abacus-flashcards/commit/3227cd550e42b0e8137a7d42866d9a37423fa61f))
- remove controlled tooltip state to enable proper HoverCard timing ([e6e3aa9](https://github.com/antialias/soroban-abacus-flashcards/commit/e6e3aa948783b28d4edac6360ed5d4dc40b4ef80))
- remove explicit conventionalcommits preset config to fix semantic-release ([15a9986](https://github.com/antialias/soroban-abacus-flashcards/commit/15a9986c76d20a35ecca3a5c180f46b34369af49))
- remove failing tests from GitHub Actions workflow to enable deployment ([2eaeac6](https://github.com/antialias/soroban-abacus-flashcards/commit/2eaeac686217a574d1d74d4f78f64e17096dc602))
- remove ordering mismatch warning and implement correct expected state calculation ([9de48c6](https://github.com/antialias/soroban-abacus-flashcards/commit/9de48c63d8485507bb3935be0a052059461ababf))
- remove Panda CSS generated files from source control ([18b685b](https://github.com/antialias/soroban-abacus-flashcards/commit/18b685b92d6fbf8be9d6b34a84a49244f10dd71a))
- remove redundant mode selection and revert game naming ([03f5056](https://github.com/antialias/soroban-abacus-flashcards/commit/03f5056902574e069093e0b2139f9c9211268baa))
- remove TypeScript type check from GitHub Actions workflow ([18e2aa9](https://github.com/antialias/soroban-abacus-flashcards/commit/18e2aa9b5962be2f740819175b68755a47755bbd))
- replace all window.location.href with Next.js router for proper navigation ([2a84687](https://github.com/antialias/soroban-abacus-flashcards/commit/2a84687fec2ce577e10fecf4a8e52c83fe081f3e))
- replace invalid CSS 'space' property with 'gap' in guide page ([5841f3a](https://github.com/antialias/soroban-abacus-flashcards/commit/5841f3a52d2e5c55ecced905bc94cba9c300ffbf))
- reposition on-screen keyboard to avoid covering abacus tiles ([6e5b4ec](https://github.com/antialias/soroban-abacus-flashcards/commit/6e5b4ec7bf7e2af5f724628693d3c4ee8c5b3968))
- resolve abacus sizing and prefix matching issues in memory quiz ([b1db028](https://github.com/antialias/soroban-abacus-flashcards/commit/b1db02851c40c4125bd2d077132475af84cf229a))
- resolve arrow disappearing and incorrect bead targeting in 3+14=17 story ([b253a21](https://github.com/antialias/soroban-abacus-flashcards/commit/b253a21c6c7169b32f8aa83863099abb8070eaed))
- resolve async/await issues in download API routes ([9afaf6e](https://github.com/antialias/soroban-abacus-flashcards/commit/9afaf6e12a0fb47e798b9dea7be0de33c1a4e6ee))
- resolve auto-incrementing counter in InteractiveWithNumbers story ([1838d7e](https://github.com/antialias/soroban-abacus-flashcards/commit/1838d7e72f08e63af66e5695e8918d85fdc216c2))
- resolve circular dependency errors in memory quiz on-screen keyboard ([d25e2c4](https://github.com/antialias/soroban-abacus-flashcards/commit/d25e2c4c006b54a51eaa3a93fa8462e3a06221b7))
- resolve critical bugs in automatic instruction generator found by stress testing ([e783776](https://github.com/antialias/soroban-abacus-flashcards/commit/e783776754555c347e0de425dd78916b76cd3bdc))
- resolve critical ordering mismatch between multiStepInstructions and stepBeadHighlights ([2c395f3](https://github.com/antialias/soroban-abacus-flashcards/commit/2c395f38c3533fc4e7659d4801cb7010c60fe4bc))
- resolve display switching bug causing game content to disappear ([4736768](https://github.com/antialias/soroban-abacus-flashcards/commit/4736768ba642f91bfbf8d62725a9468086183892))
- resolve dnd-kit ref extension error in enhanced arena ([fac3202](https://github.com/antialias/soroban-abacus-flashcards/commit/fac320282b7f31d7f42eaa725d4288240f35ddda))
- resolve final TypeScript errors in place-value migration ([9a24dc8](https://github.com/antialias/soroban-abacus-flashcards/commit/9a24dc8f9d1e4217fe444f0ff52a7850d76bdf7b))
- resolve infinite render loop when clicking Next in tutorial player ([4ef6ac5](https://github.com/antialias/soroban-abacus-flashcards/commit/4ef6ac5f164dc97c5ddd5b9f307bd84ec0df8871))
- resolve nested border radius visual artifacts on match cards ([c69f6a4](https://github.com/antialias/soroban-abacus-flashcards/commit/c69f6a451a146053ff01e0bcbaacf1363781e590))
- resolve Python FileNotFoundError and improve error handling ([69bda9f](https://github.com/antialias/soroban-abacus-flashcards/commit/69bda9fb36ef58c3dab3478ea7d05c1e7c8b1503))
- resolve ReferenceError by moving ref declarations before usage ([fa153c6](https://github.com/antialias/soroban-abacus-flashcards/commit/fa153c6908da67f55bfc496f420864478b9c6bad))
- resolve runtime error - calculateOptimalGrid not defined ([fbc84fe](https://github.com/antialias/soroban-abacus-flashcards/commit/fbc84febda5507d434cf60aa0fce32350e01ec96))
- resolve SorobanGeneratorBridge path issues for SVG generation ([845a4ff](https://github.com/antialias/soroban-abacus-flashcards/commit/845a4ffc486f1ee0d5893f9d783e3c8af622cd08))
- resolve stepIndex mismatch preventing arrows in multi-step sequences ([96fda6b](https://github.com/antialias/soroban-abacus-flashcards/commit/96fda6b91903c0ca76cfbb6e0f4888b492e1a731))
- resolve style dropdown click-outside and infinite re-render issues ([6394218](https://github.com/antialias/soroban-abacus-flashcards/commit/639421866757889f187453557b45276be07acae3))
- resolve temporal dead zone error with goToNextStep ([3d503dd](https://github.com/antialias/soroban-abacus-flashcards/commit/3d503dda5d494c31461bbebfdf7e04899a9dc4b5))
- resolve test failures and improve test robustness ([3c0affc](https://github.com/antialias/soroban-abacus-flashcards/commit/3c0affca00ba6d87322334d162f2aee2109166d8))
- resolve TypeScript compilation errors ([db3784e](https://github.com/antialias/soroban-abacus-flashcards/commit/db3784e7d0b9bfef03af5966cc13d8c92f1e3982))
- resolve TypeScript compilation errors blocking GitHub Actions build ([83ba792](https://github.com/antialias/soroban-abacus-flashcards/commit/83ba79241f5a6480e8c2d797bf5c9b407de7f297))
- resolve TypeScript errors across the codebase ([5946183](https://github.com/antialias/soroban-abacus-flashcards/commit/59461831e5f6cdfa3ef19bf4b092b2d7d2abc622))
- resolve zero-state interaction bug in AbacusReact component ([f18018d](https://github.com/antialias/soroban-abacus-flashcards/commit/f18018d9afd2cc83a4e34d8925383c79a35f11df))
- restore click functionality alongside directional gestures ([3c28c69](https://github.com/antialias/soroban-abacus-flashcards/commit/3c28c694fc83ac58a0dec91b25b3919dfe22eb63))
- restore interactive abacus display with TypstSoroban fallback ([b794187](https://github.com/antialias/soroban-abacus-flashcards/commit/b794187392bd5d1a828f34372c29b5a4b32d8726))
- restore missing typst dependencies for WASM loading ([96aa790](https://github.com/antialias/soroban-abacus-flashcards/commit/96aa7906931498874c4e42a5d457bdc1e9f3d952))
- restore single-click player card functionality for arena toggle ([1ba2a11](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba2a11b3a916996f50ad9aab0b3b0b4e0fc129d))
- restore workspace dependencies and fix TypeScript errors ([31df87d](https://github.com/antialias/soroban-abacus-flashcards/commit/31df87d3fc8febcd7c58cc654d00c83506089ab9))
- show numbers in educational abacus examples ([2b5f143](https://github.com/antialias/soroban-abacus-flashcards/commit/2b5f14310c0f03f1ad32d10dfe638f5d8731cf87))
- simplify collision detection to resolve iterable error ([0b3e8fd](https://github.com/antialias/soroban-abacus-flashcards/commit/0b3e8fd3d63257b2eb99b0abcefeac183b16703c))
- simplify inactive heaven bead positioning for better gap matching ([22c4bd3](https://github.com/antialias/soroban-abacus-flashcards/commit/22c4bd3112567df03a185f8ee59813b6a7846fac))
- simplify semantic-release config to use default conventional commits ([e207659](https://github.com/antialias/soroban-abacus-flashcards/commit/e20765953b4269be39217d9d20505b4f29639685))
- single digit values now correctly position in rightmost column ([689bfd5](https://github.com/antialias/soroban-abacus-flashcards/commit/689bfd5df106f60f904c2a1b2c38339b50cc2ae7))
- stabilize smart help detection with timer-based state ([9cc3a0e](https://github.com/antialias/soroban-abacus-flashcards/commit/9cc3a0ea9b548c03a6ef80b8b7a6511df2b0e82d))
- update bridge generator interface to support SVG format ([a022852](https://github.com/antialias/soroban-abacus-flashcards/commit/a02285289ad4c88072d25c7fe44342f29c86c3ba))
- update GitHub Actions to use latest action versions ([b674946](https://github.com/antialias/soroban-abacus-flashcards/commit/b674946d8d397fed61f15f42cfa802989a6a81a6))
- update GitHub Actions to use latest action versions for Storybook deployment ([f0bb411](https://github.com/antialias/soroban-abacus-flashcards/commit/f0bb411573c8496d11d560fa7efe9324015412b2))
- update GitHub Pages actions to v4 for better deployment reliability ([be76c23](https://github.com/antialias/soroban-abacus-flashcards/commit/be76c2355fbefd924890baad50b6e873a4e435f2))
- update gitignore to follow Panda CSS best practices ([ccd0aa7](https://github.com/antialias/soroban-abacus-flashcards/commit/ccd0aa7552e72fc7fb94464522636f1b3114b1ce))
- update pnpm lockfile to sync with semantic-release dependencies ([9d23e82](https://github.com/antialias/soroban-abacus-flashcards/commit/9d23e82b5aa086e591d7c86d5b821780993f860f))
- update relative import in generate.py for module compatibility ([b633578](https://github.com/antialias/soroban-abacus-flashcards/commit/b633578ac53dab1cc2d6e33939fffc16953fe89b))
- update unified gallery to use correct crop examples ([826e86d](https://github.com/antialias/soroban-abacus-flashcards/commit/826e86d73c0d436099deda89eb4a7772a53e3840))
- upgrade Node.js to version 20 for Storybook compatibility ([4c33872](https://github.com/antialias/soroban-abacus-flashcards/commit/4c338726c13af623b1536f75fe6a18e0ab529377))
- use actual AbacusReact component for README examples via SSR ([a630aa4](https://github.com/antialias/soroban-abacus-flashcards/commit/a630aa4f2cefce437c5e5a498e383407b9f424da))
- use aggressive NumberFlow mock for SVG text rendering ([1364b11](https://github.com/antialias/soroban-abacus-flashcards/commit/1364b11ed1747323a1161785798b880d8bcf3fce))
- use correct test command in GitHub Actions workflow ([6483e28](https://github.com/antialias/soroban-abacus-flashcards/commit/6483e285d48b799d5c11c6b002ec81eeff29969b))
### Features
- **abacus-react:** add dual publishing to npm and GitHub Packages ([242ee52](https://github.com/antialias/soroban-abacus-flashcards/commit/242ee523edebe2cfc5db27cc72fba0315072bec2))
- **abacus-react:** comprehensive README overhaul with current capabilities ([0ce351e](https://github.com/antialias/soroban-abacus-flashcards/commit/0ce351e572ac34fa816ee7533a26403c843d93f3))
- **abacus-react:** configure GitHub Packages-only publishing workflow ([5eeedd9](https://github.com/antialias/soroban-abacus-flashcards/commit/5eeedd9a59a6b3898cadb30c413daa791a9561ee))
- **abacus-react:** enable dual publishing to npm and GitHub Packages ([176a196](https://github.com/antialias/soroban-abacus-flashcards/commit/176a1961d05f99908a72837cf4e8ec93c0d33145))
- **abacus-react:** enhance package description with semantic versioning details ([af037b5](https://github.com/antialias/soroban-abacus-flashcards/commit/af037b5e0a1ded5460f95498eb1fb5ac19c2e3fa))
- **abacus-react:** implement GitHub Packages-only publishing workflow ([b194599](https://github.com/antialias/soroban-abacus-flashcards/commit/b194599f6029015b1aba0e57eb5fe9f83b89d403))
- **abacus-react:** implement GitHub-only semantic release with manual package publishing ([33b0567](https://github.com/antialias/soroban-abacus-flashcards/commit/33b056769811d1cf1c41dee9e65f6e12188e6f5f))
- **abacus-react:** simplify to GitHub Packages-only publishing ([acc126b](https://github.com/antialias/soroban-abacus-flashcards/commit/acc126bd5a0f0b2017263593ac2e3a180606f17b))
- **abacus-react:** use environment variables to override npm registry ([ad444e1](https://github.com/antialias/soroban-abacus-flashcards/commit/ad444e108f76d3014e492ddc94de0e52c61743ea))
- add 292 comprehensive snapshot tests for pedagogical algorithm ([3b8f803](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8f803ca8895bfb3db75c0c4dae538aefde89e7))
- add AbacusContext for global display configuration ([6460089](https://github.com/antialias/soroban-abacus-flashcards/commit/6460089ab9be95e48a3e8e16954c3237cfe4a4ee))
- add ArithmeticOperationsGuide component to learning guide ([902fa56](https://github.com/antialias/soroban-abacus-flashcards/commit/902fa56d238e3f4ebb911a5565dbb3a0b00cdbac))
- add automated semantic release system with conventional commits ([46c8839](https://github.com/antialias/soroban-abacus-flashcards/commit/46c88392d1902a48b0399ede1850c6f8e8c590f6))
- add backgroundGlow support for column highlighting ([b1866ce](https://github.com/antialias/soroban-abacus-flashcards/commit/b1866ce7fbb6b719ec618ea02fb8da557195440c))
- add bead annotation support to SVG generation ([ab244ea](https://github.com/antialias/soroban-abacus-flashcards/commit/ab244ea1911daf7934f7e6a3b7187710002728f7))
- add browser fullscreen API context ([8e1a948](https://github.com/antialias/soroban-abacus-flashcards/commit/8e1a948ffde3db98052bdfe7b604d58e1934e4b6))
- add browser-free example generation using react-dom/server ([a100a6e](https://github.com/antialias/soroban-abacus-flashcards/commit/a100a6e4984b5b1c2b7f71d19458684f957406d0))
- add browser-side bead annotation processing ([914e145](https://github.com/antialias/soroban-abacus-flashcards/commit/914e145d445194bbdf68940ba2cf5224dd152fa7))
- add CI-friendly example generation and verification ([1adbd1a](https://github.com/antialias/soroban-abacus-flashcards/commit/1adbd1a5ffd28f1c7d49aad8b21850d9e3785912))
- add click-to-dismiss functionality for success popup ([3066826](https://github.com/antialias/soroban-abacus-flashcards/commit/306682632e64ca65500569c017e32b619f8115db))
- add colored numerals feature to match bead colors ([e4aaaea](https://github.com/antialias/soroban-abacus-flashcards/commit/e4aaaeab1318e1679399eb5f108073adb6cc9563))
- add complete NAS deployment system for apps/web ([eb8ed8b](https://github.com/antialias/soroban-abacus-flashcards/commit/eb8ed8b22c6f950210f7e77bdb27ea98ca4aa11d))
- add comprehensive .gitignore for monorepo ([9eccd34](https://github.com/antialias/soroban-abacus-flashcards/commit/9eccd34e58f131d0b9099ac2793a16900aa7f2e7))
- add comprehensive soroban learning guide with server-generated SVGs ([38d8959](https://github.com/antialias/soroban-abacus-flashcards/commit/38d89592c951ec9f015a18b767e82b565d068ec5))
- add comprehensive Storybook demos for problem generation system ([c01f968](https://github.com/antialias/soroban-abacus-flashcards/commit/c01f968ff7fd3436ae273bbcb2d7f67de90cfd7c))
- add comprehensive Storybook examples for documentation ([8289241](https://github.com/antialias/soroban-abacus-flashcards/commit/828924129e7acc03427fc01be7a0afdc1b34a6af))
- add comprehensive test suite and documentation ([bb869a0](https://github.com/antialias/soroban-abacus-flashcards/commit/bb869a0b11ba1173c5b4c7fbea096dac7f0d98d2))
- add comprehensive test suite with visual regression testing ([7a2eb30](https://github.com/antialias/soroban-abacus-flashcards/commit/7a2eb309a846fdf125371e890197ab5cb2d4ea9e))
- add comprehensive tests for celebration tooltip behavior ([a23ddf5](https://github.com/antialias/soroban-abacus-flashcards/commit/a23ddf5b9acc1a7a78916de74813d3a10202ada8))
- add comprehensive tutorial system with editor and player ([579caf1](https://github.com/antialias/soroban-abacus-flashcards/commit/579caf1a26652704b8a8a5de566f4a6ab6e8c2c5))
- add comprehensive unit test suite for memory quiz functionality ([a557362](https://github.com/antialias/soroban-abacus-flashcards/commit/a557362c9ea6ea033b4c356351e9959542c9f60c))
- add comprehensive welcome page as default landing experience ([556a830](https://github.com/antialias/soroban-abacus-flashcards/commit/556a830540549ca1f268a22f44fd4706495a6fa3))
- add concurrent Panda CSS watch to dev script ([e8aed80](https://github.com/antialias/soroban-abacus-flashcards/commit/e8aed8034a2d109d8231d942f45e9620f526d948))
- add config presets for colored numerals and skip counting ([a8a01a8](https://github.com/antialias/soroban-abacus-flashcards/commit/a8a01a8db3e9264b4c5ecd199e40b0d1c26abc17))
- add cosmic fullscreen mode to abacus style dropdown ([afec22a](https://github.com/antialias/soroban-abacus-flashcards/commit/afec22ac3f497067a9a32693cbca87b09073b449))
- add deprecation markers to legacy column-based API ([22f1869](https://github.com/antialias/soroban-abacus-flashcards/commit/22f186955722e596bc9b2f18255798379a62232b))
- add development tooling and comprehensive setup ([7ca65bf](https://github.com/antialias/soroban-abacus-flashcards/commit/7ca65bfd596aab5fcee627bc968ff512d51ce36c))
- add extracted TutorialDebugPanel and TutorialNavigation components ([bc5446a](https://github.com/antialias/soroban-abacus-flashcards/commit/bc5446a29f123cf79701432653378786bee66efb))
- add fox tunnel digging system for Lightning Sprint mode ([b7fac3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b7fac3a601ccfff1d2945177176780920c0d7c63))
- add full-viewport abacus test page ([861f0e0](https://github.com/antialias/soroban-abacus-flashcards/commit/861f0e0a0fd8a0f205b0e932caff78de198c28b8))
- add fullscreen arcade page with Champion Arena ([3edf35f](https://github.com/antialias/soroban-abacus-flashcards/commit/3edf35f6a1a0ff199dc1c109241cfa584663a7c5))
- add fullscreen game layout wrapper component ([a25e611](https://github.com/antialias/soroban-abacus-flashcards/commit/a25e6117bb325aa5d75443b42c98ca5d68624693))
- add fullscreen parameter handling to GameCard ([337aa56](https://github.com/antialias/soroban-abacus-flashcards/commit/337aa5609a65d8bdcb9c516a0f50e3d3df0f76ee))
- add fullscreen support to Memory Quiz game ([763fc95](https://github.com/antialias/soroban-abacus-flashcards/commit/763fc95025e84af515711dccd6847abbd3c97bb0))
- add Games navigation to main app header ([b87ed01](https://github.com/antialias/soroban-abacus-flashcards/commit/b87ed01520d19719e162de41f30c80595295473e))
- add GitHub Pages Storybook deployment with dual documentation sites ([439707b](https://github.com/antialias/soroban-abacus-flashcards/commit/439707b1188e9750fb2c62aac05d54fede196417))
- add guided addition tutorial with five complements ([8ca9dd7](https://github.com/antialias/soroban-abacus-flashcards/commit/8ca9dd7a193a573035a5d42cd0308c3b85d0e121))
- add input-based flashcard template with parameter parsing ([b375a10](https://github.com/antialias/soroban-abacus-flashcards/commit/b375a104a5ea90e97f7c4530bdb85d282f9eb94d))
- add intelligent on-screen number pad for devices without keyboards ([d4740ff](https://github.com/antialias/soroban-abacus-flashcards/commit/d4740ff99709be915c41f51d973706f6ff2774b3))
- add interactive abacus display to guide reading section ([6d68cc2](https://github.com/antialias/soroban-abacus-flashcards/commit/6d68cc2a061d74f0df13002e5a9382f26b657751))
- add interactive bead clicking to soroban abacus ([697552e](https://github.com/antialias/soroban-abacus-flashcards/commit/697552ecd916ab7045b28d075610e6f542b7ad91))
- add interactive test story for column highlighting with bead interaction ([ee20473](https://github.com/antialias/soroban-abacus-flashcards/commit/ee20473a3646267763184ec25fc2254009671066))
- add interactive tutorial system with step validation ([c5c2542](https://github.com/antialias/soroban-abacus-flashcards/commit/c5c2542849710dee03ffe48f136c3c7462514b36))
- add invisible crop marks for consistent SVG viewBox boundaries ([7731f70](https://github.com/antialias/soroban-abacus-flashcards/commit/7731f70b996758e701062de1b2f380e698a0ddab))
- add Node.js/TypeScript integration with clean function interface ([fb1b047](https://github.com/antialias/soroban-abacus-flashcards/commit/fb1b0470cfb4de3e38b20c9331980ceb705311cf))
- add PDF print integration with modal interface ([09b0fad](https://github.com/antialias/soroban-abacus-flashcards/commit/09b0fad6336a85ddfe6b386850fd423685f83734))
- add pedagogical segments for contextual learning ([0053510](https://github.com/antialias/soroban-abacus-flashcards/commit/00535107835551cd660b1bd523d17126b9e7f6d0))
- add practice page system to guided addition tutorial ([9adc3db](https://github.com/antialias/soroban-abacus-flashcards/commit/9adc3db966d420b39a7eeb851c5a6131b4ed09d3))
- add precise term position tracking to unified step generator ([52323ae](https://github.com/antialias/soroban-abacus-flashcards/commit/52323aeba80d57ffaf32af27e4f12c37099ca9f6))
- add production-ready defensive programming for pedagogical segments ([704a8a8](https://github.com/antialias/soroban-abacus-flashcards/commit/704a8a82284e91d35e747cc4c2ffbec61b21b155))
- add proper step initialization and multi-step navigation to TutorialContext ([153649c](https://github.com/antialias/soroban-abacus-flashcards/commit/153649c17d118cb8c9025cce36de99ab846bda61))
- add Python bridge and optional FastAPI server ([98263a7](https://github.com/antialias/soroban-abacus-flashcards/commit/98263a79a064cf6934e1706575cd5b31c47e249f))
- add Radix tooltip dependency for better tooltip accessibility ([6c02ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/6c02ea06e7f6285fe89df533327cd2cffd1d3b31))
- add real-time bead movement feedback to tutorial UI ([4807bc2](https://github.com/antialias/soroban-abacus-flashcards/commit/4807bc2fd959550737ff0a741f578472dc687303))
- add reusable GameSelector and GameCard components ([c5a654a](https://github.com/antialias/soroban-abacus-flashcards/commit/c5a654aef15e840ca12216a908b30806ed80afea))
- add self-contained Storybook-like gallery for template visualization ([efc5cc4](https://github.com/antialias/soroban-abacus-flashcards/commit/efc5cc408d0ce8a1f9765e99b24c7c3148d2237c))
- add setGameModeWithPlayers method to GameModeContext ([c3a4d76](https://github.com/antialias/soroban-abacus-flashcards/commit/c3a4d76d1601437956d24f39c2fc1096a132a238))
- add single card template for PNG/SVG output ([3315310](https://github.com/antialias/soroban-abacus-flashcards/commit/33153108a2ade5d4f0921f1d26dda5d7387eba81))
- add smooth cross-zone reordering animations and tone down scaling ([b7335f0](https://github.com/antialias/soroban-abacus-flashcards/commit/b7335f0e67fe0f3c5088d775104b3ad2408a1755))
- add soroban games section with Speed Memory Quiz ([331a789](https://github.com/antialias/soroban-abacus-flashcards/commit/331a78937e2fcf03fc84d68cfb1e63edf2388112))
- add static site generator for gallery with embedded SVGs ([505ff66](https://github.com/antialias/soroban-abacus-flashcards/commit/505ff66bd57ca9627e7ac2aa4af5af5c0f2ed324))
- add step parameter for skip counting ([c94fa5c](https://github.com/antialias/soroban-abacus-flashcards/commit/c94fa5c74ea45926d1169a4bfeeddb71ef989211))
- add Storybook stories for debugging zero-state interaction bug ([f293e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/f293e5ecf7dffe030a3283c17076c33270ac3aa1))
- add stunning hero section with colorful soroban showcase ([d65ac54](https://github.com/antialias/soroban-abacus-flashcards/commit/d65ac546aa872688c483575be558cb78ce17326d))
- add SVG post-processing to convert bead annotations to data attributes ([8de3259](https://github.com/antialias/soroban-abacus-flashcards/commit/8de32593b035d391261feb836135ea0d78720ffb))
- add SVG post-processor to package exports ([59f4022](https://github.com/antialias/soroban-abacus-flashcards/commit/59f4022afb6f58b0a71c69d4b5537b56933d053e))
- add testing framework dependencies ([11306df](https://github.com/antialias/soroban-abacus-flashcards/commit/11306dfb2ec813f113f060b49408a01c8ccdcbf7))
- add TouchSensor for mobile drag and drop compatibility ([4fbf4d8](https://github.com/antialias/soroban-abacus-flashcards/commit/4fbf4d8bb28e075084efae29c4eb78f74efbc6d3))
- add TypeScript client libraries for browser integration ([f21b5e5](https://github.com/antialias/soroban-abacus-flashcards/commit/f21b5e5592f98b3b3a953148c5c023be553ea957))
- add TypeScript configuration for core package ([43b3296](https://github.com/antialias/soroban-abacus-flashcards/commit/43b3296e2652609ac08ed6803af5817fa15e1119))
- add typography improvements and subtle dev warning styling ([12a8837](https://github.com/antialias/soroban-abacus-flashcards/commit/12a88375abe0e831bf439915a2af9c6bb3d7257e))
- add unified step generator for consistent pedagogical decomposition ([93d2d07](https://github.com/antialias/soroban-abacus-flashcards/commit/93d2d07626558d81a0f0dce0280de333a3c5e413))
- add UserProfileProvider to app layout for character support ([21c430b](https://github.com/antialias/soroban-abacus-flashcards/commit/21c430b9f0348cd3836d40ea763b916f6c4af4e4))
- add WASM preloading strategy with template deduplication ([91e65c8](https://github.com/antialias/soroban-abacus-flashcards/commit/91e65c8a61dcb41f7a84c4e1ae923288dfd7fabe))
- add web development test files and public assets ([0809858](https://github.com/antialias/soroban-abacus-flashcards/commit/0809858302acb45231ac373cb22cdbe93f9a9309))
- add web output format with interactive hover flashcards ([0a4e849](https://github.com/antialias/soroban-abacus-flashcards/commit/0a4e849c35249e24ed5691f22baa9c6b6e6986f0))
- attempted floating math display following train ([2d50eb8](https://github.com/antialias/soroban-abacus-flashcards/commit/2d50eb8e976b62ad143df9104281f28f312afbe5))
- automatic abacus instruction generator for user-created tutorial steps ([5c46470](https://github.com/antialias/soroban-abacus-flashcards/commit/5c4647077b121c364ca18a21464a50e89deabe4a))
- BREAKTHROUGH - eliminate effectiveColumns threading nightmare! ([8fd9e57](https://github.com/antialias/soroban-abacus-flashcards/commit/8fd9e57292dfc32b8092b5500164d2b5da68105f))
- complete deployment documentation and infrastructure ([26f9285](https://github.com/antialias/soroban-abacus-flashcards/commit/26f928586ee57882bc8e6e29d55db4083d799e13))
- COMPLETE place-value migration - eliminate all backward compatibility ([67be974](https://github.com/antialias/soroban-abacus-flashcards/commit/67be974a8b7f89eb7f80b157a2a4e025f68b438b))
- complete steam train sound system and smooth time-of-day transitions ([6c60f94](https://github.com/antialias/soroban-abacus-flashcards/commit/6c60f94a5664e92905d91494ff3c8abb32302e4e))
- completely rewrite SorobanQuiz memory game with advanced features ([c3fdbfc](https://github.com/antialias/soroban-abacus-flashcards/commit/c3fdbfc199259aeba3a97b1ae83b0a8b4b785c4f))
- connect TutorialPlayer to universal AbacusDisplayContext ([ff12bab](https://github.com/antialias/soroban-abacus-flashcards/commit/ff12bab8ab8cd9fcbbb5be1447bc9aefb1931264))
- convert SorobanQuiz memory game styling to Panda CSS ([bed97e6](https://github.com/antialias/soroban-abacus-flashcards/commit/bed97e62ad236a1d8658f44a7eeffdc407ce5097))
- create @soroban/templates package with dual Node.js/Python interface ([7da0123](https://github.com/antialias/soroban-abacus-flashcards/commit/7da0123a840af594dedd5b830cb0bd61ac04b9b9))
- create comprehensive interactive soroban tutorial with stunning UI ([d78f19e](https://github.com/antialias/soroban-abacus-flashcards/commit/d78f19e4bca5a08c0ee6db22914ac07d0411b83b))
- create interactive gallery replicating original Typst design ([1bcfd22](https://github.com/antialias/soroban-abacus-flashcards/commit/1bcfd22f17cc9876393c9aa76a7c3a2292369eaa))
- create Next.js web application with beautiful UI ([1b7e71c](https://github.com/antialias/soroban-abacus-flashcards/commit/1b7e71cc0d0c6baa09069560eb89c137aa4360b2))
- create sequential practice problem player with step-by-step guidance ([8811106](https://github.com/antialias/soroban-abacus-flashcards/commit/88111063a5cf885735ffbed3ca4ce63f54559e74))
- create shared EditorComponents library for tutorial UI consistency ([4991a91](https://github.com/antialias/soroban-abacus-flashcards/commit/4991a91c7d989c7e770ddea2193fc890b1b70741))
- create unified skill configuration interface with intuitive modes ([fc79540](https://github.com/antialias/soroban-abacus-flashcards/commit/fc79540f788b3332f74bd22bdef5fe562a3aa903))
- disable NumberFlow animations for keyboard input to prevent jarring transitions ([fe38bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/fe38bfc8ad36b6b7787bb6c5f2a49dfc5527f1d1))
- display pedagogical terms inline with current tutorial step ([408eb58](https://github.com/antialias/soroban-abacus-flashcards/commit/408eb58792d6082fd33ea92bb40e42da7fec2597))
- enable automatic live preview updates and improve abacus sizing ([f680987](https://github.com/antialias/soroban-abacus-flashcards/commit/f680987ed6d0ea3e0fda6e02936c2e4a2c700103))
- enhance ChampionArena with integrated GameSelector and improved UX ([aba3f68](https://github.com/antialias/soroban-abacus-flashcards/commit/aba3f685bc611f66e3500e1a9b91b94f38dac545))
- enhance column mapping for two-level highlighting ([007d088](https://github.com/antialias/soroban-abacus-flashcards/commit/007d0889eba255e90cbb4abab9926c980570f4b2))
- enhance crop marks with edge-based positioning and comprehensive tests ([8c7a5b1](https://github.com/antialias/soroban-abacus-flashcards/commit/8c7a5b1291314a8e1f9ac2f854f937b70d7250bc))
- enhance GameCard with epic character celebration animations ([b05189e](https://github.com/antialias/soroban-abacus-flashcards/commit/b05189e9ebdbb1f16d6654d00b59550967a27347))
- enhance instruction generator with step bead highlighting and multi-step support ([8518d90](https://github.com/antialias/soroban-abacus-flashcards/commit/8518d90e8500deb7ca0efbc07d41da35f6ac2e1c))
- enhance memory quiz input phase for better learning experience ([7c5556b](https://github.com/antialias/soroban-abacus-flashcards/commit/7c5556bf51419d61aa99d852e52fc0385f198f0b))
- enhance memory quiz with dynamic columns and adaptive transitions ([aa1f674](https://github.com/antialias/soroban-abacus-flashcards/commit/aa1f674553d316312497e5e3397e479ad541d141))
- enhance navigation touch targets for mobile ([6e09f21](https://github.com/antialias/soroban-abacus-flashcards/commit/6e09f21a704b9f23150de4acc809980bcce173bc))
- enhance pedagogical reasoning tooltips with comprehensive context ([bb38c7c](https://github.com/antialias/soroban-abacus-flashcards/commit/bb38c7c87cb46437223f8007d55d0a9d59b1152e))
- enhance steam train coal shoveling visual feedback ([f26fce4](https://github.com/antialias/soroban-abacus-flashcards/commit/f26fce4994885c2371ec14433d57cef449364c1b))
- enhance test page with lazy loading demo ([5a8bb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/5a8bb2f85904d4dcb7067896f081c7eb29859cd1))
- enhance tooltips with combined provenance and pedagogical content ([0c7ad5e](https://github.com/antialias/soroban-abacus-flashcards/commit/0c7ad5e4e74520f3d1ad699f78f381035320e0ef))
- enhance tutorial system with multi-step progression support ([3a63950](https://github.com/antialias/soroban-abacus-flashcards/commit/3a6395097d6df7dd6210e156acc53959a7ba3bf7))
- enhance two-player matching game with multiple UX improvements ([f35dcdc](https://github.com/antialias/soroban-abacus-flashcards/commit/f35dcdc3d5a73a106aaaf19a8631b8b6a70d5ac8))
- export bridge generator from core package ([90a5c06](https://github.com/antialias/soroban-abacus-flashcards/commit/90a5c06f7c33009272f5c8d12bc5a396acd0d32b))
- export SVG processing functions from main module ([bee866a](https://github.com/antialias/soroban-abacus-flashcards/commit/bee866ab5cb22a11421e3fba1fee4a7eefead881))
- extend provenance system for multi-column term tracking ([013e8d5](https://github.com/antialias/soroban-abacus-flashcards/commit/013e8d5237753238ad93dc5e345dc8ec7bb30750))
- hide Next Action when at expected starting state for current step ([aafee3a](https://github.com/antialias/soroban-abacus-flashcards/commit/aafee3a25ac8f09de9119772db7e456d106b7196))
- hide Next Action when current state matches step target ([ed3d896](https://github.com/antialias/soroban-abacus-flashcards/commit/ed3d89667e14ad3d27b92f5175c213510766520a))
- hide redundant pedagogical expansions for simple problems ([9d0e8c7](https://github.com/antialias/soroban-abacus-flashcards/commit/9d0e8c7086051db70c8b9ea446fe1cb0d9c3a620))
- hide timer bar for train variant only ([84334f9](https://github.com/antialias/soroban-abacus-flashcards/commit/84334f9d5a980b2460bd77cf401c4410d8bd4633))
- implement 90s arcade sound system and tunnel digging mechanics ([a43ab92](https://github.com/antialias/soroban-abacus-flashcards/commit/a43ab9237e4d530d79acb83a11cfedaf0cc47338))
- implement actual abacus SVG generation for README examples ([6e02102](https://github.com/antialias/soroban-abacus-flashcards/commit/6e0210243a31be74f8ebc30eb58033e91c587652))
- implement authentic adjacent bead spacing for realistic abacus appearance ([f28256d](https://github.com/antialias/soroban-abacus-flashcards/commit/f28256dc608179d6b388fbbea6bd3ca83beda3a4))
- implement clean background glow for term-to-column highlighting ([ec030f0](https://github.com/antialias/soroban-abacus-flashcards/commit/ec030f00fd2129c17281772a99f696e477624df0))
- implement colorblind-friendly color palettes with mnemonic support ([faf578c](https://github.com/antialias/soroban-abacus-flashcards/commit/faf578c360f6436016b9dbbdfbccea0a9870c277))
- implement complete smart number entry system for quiz ([150c195](https://github.com/antialias/soroban-abacus-flashcards/commit/150c195c33073a07f3ec7c760a0512e720b9ca17))
- implement comprehensive bead diff tooltips with pedagogical decomposition ([2e3223d](https://github.com/antialias/soroban-abacus-flashcards/commit/2e3223da90f903ac1349eca5d4d988cbd40b6fa0))
- implement comprehensive character integration for /games arcade ([26bf399](https://github.com/antialias/soroban-abacus-flashcards/commit/26bf3990b04ef55cd8565ae1d69d067d5aa21ba7))
- implement comprehensive customization API for AbacusReact ([48f6e77](https://github.com/antialias/soroban-abacus-flashcards/commit/48f6e7704c6df55d770d74236abb14c4f31104ff))
- implement comprehensive pedagogical algorithm improvements ([72d9362](https://github.com/antialias/soroban-abacus-flashcards/commit/72d9362cc4db3d6356cddd848ef0a20277f745b7))
- implement comprehensive pedagogical expansion tests for abacus operations ([5d39bdc](https://github.com/antialias/soroban-abacus-flashcards/commit/5d39bdc84ef156de9a26a0175c6eb79dd8f4878c))
- implement context-aware English instruction generation ([bd3f144](https://github.com/antialias/soroban-abacus-flashcards/commit/bd3f1440a36ba21a09612f254890b33a84fe3866))
- implement CSS-based hidden inactive beads with smooth opacity transitions ([ff42bcf](https://github.com/antialias/soroban-abacus-flashcards/commit/ff42bcf6532c188bd84e547f135b2f648dbf3ebd))
- implement dynamic bead diff algorithm for state transitions ([c43090a](https://github.com/antialias/soroban-abacus-flashcards/commit/c43090aa7d7d11caa30fc767b34e087a959f1217))
- implement dynamic train orientation following curved path direction ([e6065e8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6065e8ef222c95c30bf29afb1d2b1e1de732549))
- implement elegant between-step hover-based add functionality ([89a0239](https://github.com/antialias/soroban-abacus-flashcards/commit/89a023971fcbb317eae95531d0416fe5b28c4d41))
- implement endless route progression system ([a2b3e97](https://github.com/antialias/soroban-abacus-flashcards/commit/a2b3e97eba14b48b25a87443182dbbcb3bbc2c13))
- implement enhanced tactile drag and drop arena with dnd-kit ([4b840e9](https://github.com/antialias/soroban-abacus-flashcards/commit/4b840e9c04080bd61072c6b2294cf2855b374b1e))
- implement fair scoring algorithm for card sorting challenge ([ee7a5e4](https://github.com/antialias/soroban-abacus-flashcards/commit/ee7a5e4a0b223d554fd98aa1e47e74903eae4c6f))
- implement global abacus display configuration and remove client-side SVG generation ([5c3231c](https://github.com/antialias/soroban-abacus-flashcards/commit/5c3231c1702e4c98fb19dd52630cff6e8b8a0195))
- implement HoverCard-based tooltip with enhanced UX and accessibility ([7fef932](https://github.com/antialias/soroban-abacus-flashcards/commit/7fef932134eb670247d02659ddb3a08e787a5f25))
- implement interactive pedagogical reasoning with compact tooltips ([2c09516](https://github.com/antialias/soroban-abacus-flashcards/commit/2c095162e88a9a5ebe0e25b6141ce123e7466f23))
- implement interactive place value editing with NumberFlow animations ([684e624](https://github.com/antialias/soroban-abacus-flashcards/commit/684e62463d0539c46c3937db936574d4a137e239))
- implement intuitive directional gesture system for abacus beads ([7c104f3](https://github.com/antialias/soroban-abacus-flashcards/commit/7c104f37b5d4e1d6b136ba7ad4212329c04dedfb))
- implement learner-friendly pedagogical tooltips with plain language ([01ed22c](https://github.com/antialias/soroban-abacus-flashcards/commit/01ed22c0511359aae8b07433553a6e3cd94ec3fd))
- implement mobile-first responsive design for speed memory quiz ([13efc4d](https://github.com/antialias/soroban-abacus-flashcards/commit/13efc4d0705bb9e71a2002689a4ebac109caacc2))
- implement modal dialogs with fullscreen support for challenges ([9b6cabb](https://github.com/antialias/soroban-abacus-flashcards/commit/9b6cabb1111fdbff1e41e45ba9af267d9b6547dd))
- implement native place-value architecture for AbacusReact ([3055f32](https://github.com/antialias/soroban-abacus-flashcards/commit/3055f32e5b417123bc2c4f83fa3b6500c297dda8))
- implement physical abacus logic and fix numeral coloring regression ([5e3d799](https://github.com/antialias/soroban-abacus-flashcards/commit/5e3d799096c432c54643ecbf96943796286ae8ef))
- implement precise inline highlighting of pedagogical terms ([538d356](https://github.com/antialias/soroban-abacus-flashcards/commit/538d356f038dfe29adc0e7d3a58dfc846c00d4bf))
- implement progressive enhancement with minimal loading states ([7e1ce8d](https://github.com/antialias/soroban-abacus-flashcards/commit/7e1ce8d34dbb5f17ed2228ba61150cffa42d7eb8))
- implement progressive multi-step instruction system in AbacusReact ([9195b9b](https://github.com/antialias/soroban-abacus-flashcards/commit/9195b9b6b1571f5bc85c1c37c3f0002eba76a212))
- implement proper SVG transform accumulation for crop mark viewBox calculation ([03230a2](https://github.com/antialias/soroban-abacus-flashcards/commit/03230a2eab8a0539a88308aa442b9cb3db673e91))
- implement provenance system for pedagogical term tracking ([37b5ae8](https://github.com/antialias/soroban-abacus-flashcards/commit/37b5ae86231e22053933ec9f5c469a9ff9a73b23))
- implement React abacus component with independent heaven/earth beads ([528cac5](https://github.com/antialias/soroban-abacus-flashcards/commit/528cac50a851da2068539282a26eb118bf5b296a))
- implement real SVG generation from Python bridge in preview API ([4b90d12](https://github.com/antialias/soroban-abacus-flashcards/commit/4b90d12f39e87e4b9df38f4f5f398990deafefc5))
- implement realistic abacus drag mechanics ([86cbbc8](https://github.com/antialias/soroban-abacus-flashcards/commit/86cbbc8c184031d174a5e88dc0afbab87404fb3c))
- implement revolutionary drag-and-drop champion arena interface ([dbf61c4](https://github.com/antialias/soroban-abacus-flashcards/commit/dbf61c4b2dda7f65359c954f6dd1c43fa0c951bf))
- implement semantic summarizer for pedagogical tooltips ([d1f1bd6](https://github.com/antialias/soroban-abacus-flashcards/commit/d1f1bd6d69b7a84b6179a9caa481f5b9e6dfc66d))
- implement sequential addition problem generation with skill-aware logic ([205badb](https://github.com/antialias/soroban-abacus-flashcards/commit/205badbe70fa9def9a9edbb66df105df387c199a))
- implement skill-based practice step editor system ([9a3afb1](https://github.com/antialias/soroban-abacus-flashcards/commit/9a3afb17ba85a64a28c0dd25980b4c92e3da5483))
- implement smart help detection for Next Action display ([933b948](https://github.com/antialias/soroban-abacus-flashcards/commit/933b94856d98966778e050d42fd565a772ffab16))
- implement smart tooltip positioning to avoid covering active beads ([e104033](https://github.com/antialias/soroban-abacus-flashcards/commit/e1040333710943f536c7a00fd06b855a15459e03))
- implement toggleable on-screen keyboard to prevent UI overlap ([701d23c](https://github.com/antialias/soroban-abacus-flashcards/commit/701d23c36992b09c075e1a394f8a72edffb919f9))
- implement two-level column highlighting in tutorial player ([bada299](https://github.com/antialias/soroban-abacus-flashcards/commit/bada2996e253baa6159f7198793d1d8eccaf405f))
- implement type-safe place-value API for bead highlighting ([9b6991e](https://github.com/antialias/soroban-abacus-flashcards/commit/9b6991ecff328d625c49b58062731f03faaa4a1e))
- implement unified step positioning for tutorial editor ([6aac8f2](https://github.com/antialias/soroban-abacus-flashcards/commit/6aac8f204af703c3311f523f755e04bce8fb956c))
- improve bead interaction handlers for place-value system ([34b9517](https://github.com/antialias/soroban-abacus-flashcards/commit/34b9517e4a65bed257b79c5064c886775e1b74af))
- improve celebration tooltip positioning to last moved bead ([91c5e58](https://github.com/antialias/soroban-abacus-flashcards/commit/91c5e58029d613839c7a39ed6c35d2cc85422c75))
- improve pedagogical decomposition to break down by place value ([4c75211](https://github.com/antialias/soroban-abacus-flashcards/commit/4c75211d86ca7cf4be02b5e91b9b8ee69004e98c))
- improve preview number selection for better variety demonstration ([3eb053f](https://github.com/antialias/soroban-abacus-flashcards/commit/3eb053f8250cc265aa79cfd1b4e2dfb3370d4fc4))
- improve sorting game UX with visual cues and auto-selection ([a943ceb](https://github.com/antialias/soroban-abacus-flashcards/commit/a943ceb7959809cfa1eaa9bed39fda164fa45038))
- improve visual appearance with dynamic rod bounds and better spacing ([6c95538](https://github.com/antialias/soroban-abacus-flashcards/commit/6c9553825ab6f448e2e0161e20ce5e08a40f66dd))
- initialize CHANGELOG.md for semantic release tracking ([5dcee6b](https://github.com/antialias/soroban-abacus-flashcards/commit/5dcee6b198f0fa337acf2445644ff1c982f8a73c))
- integrate bead diff algorithm with tutorial editor ([472bdf8](https://github.com/antialias/soroban-abacus-flashcards/commit/472bdf8e74f66cfce9a0858cc1520a7f3203b1d6))
- integrate guided addition tutorial into guide page ([b82a8f1](https://github.com/antialias/soroban-abacus-flashcards/commit/b82a8f1308e78571ecad0418347c9d2d03b6a395))
- integrate memory pairs game with arena champions and N-player support ([d9f07d7](https://github.com/antialias/soroban-abacus-flashcards/commit/d9f07d7a4d0292b8eec7cdfe2411e35cd9928532))
- integrate MemoryPairs game with global GameModeContext ([022dca6](https://github.com/antialias/soroban-abacus-flashcards/commit/022dca65186c7cd940a6084fd6564b3b31b242de))
- integrate NumberFlow for smooth animated number display ([e330d35](https://github.com/antialias/soroban-abacus-flashcards/commit/e330d3539da4e502e965268bcd5d2a8b6358988e))
- integrate pytest testing with make targets ([8c15d06](https://github.com/antialias/soroban-abacus-flashcards/commit/8c15d06593947109de8a1a9e94ba6473c6bb8424))
- integrate typst.ts for browser-native SVG generation ([c703a3e](https://github.com/antialias/soroban-abacus-flashcards/commit/c703a3e0270742abbdd5c58d613256ca44e9854d))
- integrate unified skill configuration interface into practice step editor ([9305f11](https://github.com/antialias/soroban-abacus-flashcards/commit/9305f11a017c04bb74fd6cf5d63119437f69f891))
- integrate unified step generator into tutorial editor UI ([88059b2](https://github.com/antialias/soroban-abacus-flashcards/commit/88059b2176e9d7076a88b503e0da16258482da1f))
- make success notification prominent but non-blocking ([7278590](https://github.com/antialias/soroban-abacus-flashcards/commit/7278590a54139766323bdbed7786e51b7e2ff01a))
- migrate all app abaci to browser-side generation ([9be52ac](https://github.com/antialias/soroban-abacus-flashcards/commit/9be52ac689be9805eec817cf0f7319e66d9f025c))
- move progressive test stories to web app with real instruction generator integration ([9d568e3](https://github.com/antialias/soroban-abacus-flashcards/commit/9d568e34f46bbaaae072a2c7076b992f16ad0a31))
- optimize games page for mobile devices ([eb7202d](https://github.com/antialias/soroban-abacus-flashcards/commit/eb7202ddc6507d4b19dd8ddff7f24492b1c2752e))
- optimize memory quiz layout for better viewport usage ([2f0c0fe](https://github.com/antialias/soroban-abacus-flashcards/commit/2f0c0fe57ea3f8cb5879a2446b19d3a12b5c56ba))
- optimize mobile viewport configuration ([476f0fb](https://github.com/antialias/soroban-abacus-flashcards/commit/476f0fb88266702e81f2be8568118eeee25c669f))
- optimize Next.js webpack configuration for WASM ([39b6e5a](https://github.com/antialias/soroban-abacus-flashcards/commit/39b6e5a20f8e7d8a6da66430b7c457c3786f564a))
- optimize showNumbers layout with three modes and visual improvements ([77dc470](https://github.com/antialias/soroban-abacus-flashcards/commit/77dc4702d42376ff099e08051f2d537f0b75a0fc))
- polish interactive abacus with column-based digit display ([ad11e3d](https://github.com/antialias/soroban-abacus-flashcards/commit/ad11e3dc9056914a3f350e3ce00632fea2ea3e53))
- redesign memory game with invisible input and penalty scoring ([b92a867](https://github.com/antialias/soroban-abacus-flashcards/commit/b92a86767797dd11ace94764da42e10d71c2847c))
- regenerate Panda CSS styles for memory quiz and other components ([b8361ee](https://github.com/antialias/soroban-abacus-flashcards/commit/b8361eea50afbdafae0c8f4571b6db6fa3e4e7ff))
- remove normalizeBeadHighlight conversion layer ([6200204](https://github.com/antialias/soroban-abacus-flashcards/commit/62002040b76a6badd2e39f8c6a24176e4950fe83))
- reorganize main page into navigable sectioned layout ([4d179b5](https://github.com/antialias/soroban-abacus-flashcards/commit/4d179b5588fa10526d6852b6d146eef127a404cb))
- replace Champion Arena with Enter Arcade button ([2b98382](https://github.com/antialias/soroban-abacus-flashcards/commit/2b98382b5ac65f613b96621f744d2d462f28ac51))
- replace inline success message with stunning floating overlay ([43f02eb](https://github.com/antialias/soroban-abacus-flashcards/commit/43f02eb539d7f50379a3bb63e9773c730ff8c38d))
- replace legacy abacus components with new AbacusReact ([2a6a010](https://github.com/antialias/soroban-abacus-flashcards/commit/2a6a0104fd05f0806a9fdb4378ecf3c27270aab8))
- replace manual dropdown with Radix UI for proper state management ([bf050fa](https://github.com/antialias/soroban-abacus-flashcards/commit/bf050fa98e24127041cf3e3849f88fb941b9626e))
- replace single-column results with persistent card grid layout ([30ae6e1](https://github.com/antialias/soroban-abacus-flashcards/commit/30ae6e1153afb30f0ea6bdf6a7f5f3ad80520248))
- replace tutorial player arrows with dynamic bead diff algorithm ([e8fe467](https://github.com/antialias/soroban-abacus-flashcards/commit/e8fe467c6c771c292d8978c12d259983b01208f2))
- restore steam train journey enhancements ([045dc9f](https://github.com/antialias/soroban-abacus-flashcards/commit/045dc9fb32e9924ab38a0312009aa64e88bff56a))
- revolutionary single-element editable NumberFlow with live abacus updates ([4bccd65](https://github.com/antialias/soroban-abacus-flashcards/commit/4bccd653051cb39980e578869698941a70e4507a))
- set up automated npm publishing for @soroban/abacus-react package ([dd80d29](https://github.com/antialias/soroban-abacus-flashcards/commit/dd80d29c979e20b4d3624cf66be79ec51d5f53a9))
- set up monorepo structure with pnpm workspaces and Turborepo ([62e941e](https://github.com/antialias/soroban-abacus-flashcards/commit/62e941e1c0d2bca831d96495fb06f4e13c239a96))
- streamline practice step editor by removing redundant preview section ([beaf3f0](https://github.com/antialias/soroban-abacus-flashcards/commit/beaf3f04438bd762afa0ec7bf50351300678a39b))
- switch tooltip system from Tooltip to HoverCard for better interactivity ([861904f](https://github.com/antialias/soroban-abacus-flashcards/commit/861904fb1fa8849e67e5ebd0131b2af6bc8c4971))
- transform tooltip into celebration when step completed ([057f71e](https://github.com/antialias/soroban-abacus-flashcards/commit/057f71e79576ed0faa7c31e57a5d73223c8111fb))
- trigger storybook deployment after enabling GitHub Pages ([64dc94e](https://github.com/antialias/soroban-abacus-flashcards/commit/64dc94e91e089fadbdb75fbbf3a6164a2d224ef4))
- update ReasonTooltip UI to prioritize semantic summaries ([6fb0384](https://github.com/antialias/soroban-abacus-flashcards/commit/6fb03845f2755c40347e731b1d934602c4cfcd7f))
### Performance Improvements
- debounce value change events during rapid gesture interactions ([82e15a1](https://github.com/antialias/soroban-abacus-flashcards/commit/82e15a1cd946581a32d4134df32883e874e3cad9))
- eliminate loading flash with delayed loading state ([c70a390](https://github.com/antialias/soroban-abacus-flashcards/commit/c70a390dc63494772ba88f716eaa78353cc649ae))
- optimize tutorial abacus highlighting calculation ([3490f39](https://github.com/antialias/soroban-abacus-flashcards/commit/3490f39a9138267c5b69f72186c3bdc024922da6))
- optimize TutorialEditor TutorialPlayer prop calculations ([8e81d25](https://github.com/antialias/soroban-abacus-flashcards/commit/8e81d25f0648639213d27274b23d70640aa1a5ec))
- speed up bead animations for fast abacus calculations ([1303c93](https://github.com/antialias/soroban-abacus-flashcards/commit/1303c930f25f889151697baa713676eed2faf321))
### BREAKING CHANGES
- abacus-react package now has independent versioning from monorepo