# [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 # [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